C++内存操纵的十二维解构艺术

C++之指针(简单易懂,非常详细) C++之指针(详细,简单易懂) 阅读详情

在C++的混沌宇宙中,指针是打开时空裂缝的密钥。本文将以全新视角解构指针的本质,揭示从堆栈穿梭到多维空间映射的进阶技法,展示现代C++赋予指针的惊人可能性。

一、指针本体论:内存的波粒二象性

所有指针变量都是量子化的存在,既指向具体内存位置,又携带类型信息波。通过类型系统实验可验证其双重属性:

template<typename T>
void quantum_observer(T* ptr) {
    std::cout << "坐标:" << reinterpret_cast<void*>(ptr) 
              << "\n波长:" << typeid(T).name() 
              << "\n振幅:" << sizeof(T) << "字节" << std::endl;
}

void wave_particle_duality() {
    int value = 42;
    quantum_observer(&value);  // 输出坐标和类型信息
    auto lambda = []{};
    quantum_observer(&lambda); // 观察函数对象的指针特性
}

现代编译器利用指针的双重特性实现虚空传送(Empty Base Optimization):

struct Empty {};
struct Composite : Empty {
    int data;
};

void ebo_proof() {
    Composite c;
    // 地址相同证明空基类优化生效
    std::cout << "基类地址:" << static_cast<Empty*>(&c) 
              << "\n派生类地址:" << &c << std::endl;
}

二、指针相对论:时空弯曲操作

通过指针算术实现高维空间投影:

template<size_t N>
void hypercube_access(int (&arr)[N][N][N]) {
    // 三维数组的一维指针操作
    int* warp_ptr = &arr[0][0][0];
    for(size_t i=0; i<N*N*N; ++i) {
        *(warp_ptr + i) = static_cast<int>(i); // 线性写入
    }

    // 验证十维访问等效性
    static_assert(&arr[2][3][4] == warp_ptr + 2*N*N + 3*N +4);
}

使用reinterpret_cast实现跨维度通讯:

void interdimensional_comm() {
    float matrix[4][4]{};
    auto quantum_link = reinterpret_cast<uint64_t(*)[4][2]>(matrix);

    // 双精度视角操作单精度空间
    (*quantum_link)[2][1] = 0x4048F5C3'00000000; // 写入3.14和0.0
    std::cout << matrix[2][1] << "," << matrix[2][2]; // 输出3.14,0
}

三、智能指针悖论:观察者效应解决方案

传统智能指针存在量子塌陷问题,我们设计观察者无关的智能指针:

template<typename T>
class superposition_ptr {
    std::unique_ptr<T> ptr;
    std::vector<std::function<void(T*)>> observers;

public:
    template<typename... Args>
    explicit superposition_ptr(Args&&... args) 
        : ptr(std::make_unique<T>(std::forward<Args>(args)...)) {}

    void observe(std::function<void(T*)> observer) {
        observers.push_back(std::move(observer));
    }

    T* collapse() { 
        for(auto& obs : observers) obs(ptr.get());
        return ptr.release();
    }

    auto operator->() { return ptr.operator->(); }
};

void quantum_observation() {
    superposition_ptr<std::string> qstr("Schrödinger");
    qstr.observe([](auto* p){ std::cout << *p << " was observed\n"; });
    auto* str = qstr.collapse(); // 触发所有观察者
}

四、函数指针的弦理论:多宇宙回调系统

构建十一维函数指针网络:

template<size_t D>
class quantum_callback {
    std::array<std::function<void()>, (1<<D)> universes;

public:
    void bind(size_t mask, auto&& func) {
        for(size_t i=0; i<(1<<D); ++i) {
            if((i & mask) == mask) {
                universes[i] = std::forward<decltype(func)>(func);
            }
        }
    }

    void trigger(size_t state) {
        if(universes[state]) universes[state]();
    }
};

void multiverse_demo() {
    quantum_callback<3> qcb; // 8个平行宇宙
    qcb.bind(0b101, []{ std::cout << "Universe 5/7 activated\n"; });
    qcb.trigger(0b101); // 激活
    qcb.trigger(0b111); // 同样激活
}

五、指针的降维打击:编译期拓扑折叠

C++20的constexpr指针实现零成本抽象:

constexpr auto compile_time_pointer() {
    int data[4] = {1,2,3,4};
    int* p = data;
    while(p != data+4) *p++ *= 2;
    return data;
}

static_assert(compile_time_pointer()[3] == 8);

构建元编程指针迷宫:

template<int* Start>
struct pointer_maze {
    static constexpr int* current = Start;

    template<size_t Offset>
    using move = pointer_maze<current + Offset>;

    static constexpr int value = *current;
};

constexpr int arr[] = {10,20,30};
using maze = pointer_maze<const_cast<int*>(arr)>::move<2>;
static_assert(maze::value == 30);

从量子化观察到十一维函数网络,C++指针技术已突破传统认知边界。当您下次使用->操作符时,请记住:每个指针都是连接无数可能的时空隧道,在类型系统的规范下创造着精妙的内存奇迹。掌握这些技术,即可在代码宇宙中自由操纵现实。

C++指针详解 概述 C/C++语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C/C++语言的灵魂一点都不为过。 有好的一面,必然会有坏的一面,指针的灵活导致了它的难以控制,所以C/C++程序员的很多bug是基于指针问题上的。今天就对指针进行详细的整理。 1、指针是什么? 指针是“指向(point to)”另外一种类型的复合类型。复合类型是指基于其它类型定义的类型。 理解指针,先从... 阅读详情

相关推荐

C++ 转杯子猜球位置 游戏

代码】C++ 转杯子猜球位置 游戏。

小天狼星_布莱克 的博客 6610

【c++】指针

目录 1.1指针的基本概念 1.2指针变量的定义和使用 1.3指针所占内存空间 1.4空指针和野指针 1.5const修饰指针 1.6指针和数组 1.7指针和函数 1.8指针、数组、函数 1.1指针的基本概念 作用:可以通过指针间接访问内存 1.2指针变量的定义和使用 1.定义指针 语法:数据类型 *指针变量名;eg:int *p; 让指针记录变量a的地址 p=&a; 2.使用指针 可以通过解引用(指针前面加个*)的方式来找到指针指...

m0_58454229的博客 8883

PCIE协议版--M.2接口规范V1.0中文版1——物理规格篇

5.1.3.双模块键模块:同时支持Socket1-DP、Socket1-SD。2.4.7.3.3.双面模块(使用H2.8、H3.2、H4.2连接器)6.5.8.2.5.热设计功率响应-带有风扇类别的薄平台笔记本电脑。2.3.7.1. Socket1&2射频连接器PIN-OUT。5.2.2.Socket2 PIN-OUT(机械KEY B)3.2.10.1.3.极薄的笔记本电脑的电源开关顺序的例子。5.1.1.Socket1-DP(机械KEY A)5.1.2.Socket1-SD(机械KEY E)

想你所想,做你所做 4679

c++指针最全总结(附源码和详细总结)

哈喽,我又来啦😄 hello😄 我是「 YR_T 」 众所周知 c++相对于其它语言的 优势就在与c++有「 指针 」 可能你之前有学习过指针 可是 你真的把指针彻底搞懂了吗🤔 如果还没有,那再来复习一下💡 ...

我的博客 2万+

ACC自适应巡航功能

自适应巡航功能(Adaptive Cruise Control)通过传感器检测车辆前方形式环境,控制自车行驶速度以达到定速巡航、跟车巡航、跟车启停,并支持超车辅助等功能。1. 定速巡航一般可设置车辆在30~150km/h的定速范围内巡航2. 跟车巡航车速0~150km/h范围内的跟车巡航3. 跟车启停30s内:自车随之起步,驾驶员无需操作30s~600s内:驾驶员按钮激活 或 轻踩加速踏板激活起步600s后:ACC退出激活状态进入待激活状态,电子驻车制动EPB会自动启动4. 超车辅助。

LXY_LXY_的博客 1385

Python实战:用Sinkhorn算法搞定最优传输问题(附完整代码)

本文详细介绍了如何使用Python实现Sinkhorn算法解决最优传输问题,包括算法原理、关键步骤和完整代码示例。通过实际案例(如图像颜色迁移)展示其高效性和稳定性,适合机器学习开发者和数据科学家应用于分布匹配等场景。

weixin_30879169的博客 98

指针的量子纠缠:C++内存操纵的十二维解构艺术

在C++的混沌宇宙中,指针是打开时空裂缝的密钥。本文将以全新视角解构指针的本质,揭示从堆栈穿梭到多维空间映射的进阶技法,展示现代C++赋予指针的惊人可能性。

lovehuangtianxin的博客 298

多标签损失之Hamming Loss(PyTorch和sklearn)、Focal Loss、交叉熵和ASL损失

多标签损失

wuli_xin的博客 4461

Python深度学习:从入门到实战

亲爱的读者,欢迎您翻开这本书。我们即将探索的,是深度学习的宇宙——一个由数据、算法与算力构筑的奇妙世界。它既是严谨的科学,也是创造的艺术,更是一条通往未来智慧的修行之路。本书将带您从最基础的数学原理出发,亲手搭建神经网络,驾驭Transformer等前沿模型,最终将智慧转化为现实世界的价值。请放下畏惧,保持好奇。这不仅是一次知识的学习,更是一场思维的远行。来,随我一起,开启这趟非凡的旅程吧。

weixin_45747731的博客 299

SDRAM控制器——添加读写FIFO

用FIFO实现数据缓存

H19981118的博客 2627

Python+OpenCV实战:雨天车牌识别准确率提升300%的5个关键技巧

本文针对雨天车牌识别准确率骤降的难题,分享了五个基于Python和OpenCV的实战技巧。通过暗通道先验去雾、雨纹抑制、光照不变量颜色空间转换、多尺度自适应阈值分割以及融合传统特征与轻量级深度学习的混合识别策略,系统性地提升了算法在恶劣天气下的鲁棒性。这些方法能有效解决图像模糊、对比度低、字符断裂粘连等问题,为智能交通等实际应用提供可靠解决方案。

k8l9m0n的博客 716

【C++基础】10. 指针

指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。不同数据类型的指针都是一个代表内存地址的长的十六进制数。唯一的不同是,指针所指向的变量或常量的数据类型不同。指针变量声明的一般形式为:type 是指针的基类型,它必须是一个有效的 C++ 数据类型;用来声明指针的星号 * 与乘法中使用的星号是相同的,但在这个语句中,星号用来指定一个变量是指针;var-name 是指针变量的名称。实例:有效的指针声明:int *ip;/* 一个整型的指针 */double *dp;

普罗米修斯的博客 3416

centos7 python3.12.1 报错 No module named _ssl,坑我几个小时

网上的教程很多,但几乎是无效的,跟着我这教程,可以完美解决。

Amio_的博客 1万+

c++ 指针详解

使用指针遍历数组 ;指针的概念与理解; 指针的含义;指针的创建与初始化 ;指针的基本操作;指针的解引用和取地址;指针的算数操作 ;指针相减 ;const指针;指向const的指针;指针的数组和数组的指针;数组的指针地址;指针的指针;const_cast ;reinterpret_cast;

m0_62870588的博客 4万+

避坑指南:从聚宽迁移到QMT必须知道的5个细节(含Redis连接异常处理)

本文详细解析了从聚宽迁移到QMT平台时需注意的5个关键细节,特别是Redis连接池优化和xtquant重连机制。通过实战代码示例,帮助量化团队解决信号传递稳定性、时间同步、滑点控制等核心问题,确保交易策略平稳过渡。

weixin_27303545的博客 430

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C++指针(pointer)

C++指针(pointer) 在计算机科学中,指针(Pointer),是编程语言中的一类数据类型及其对象或变量,用来表示或存储一个存储器地址,这个地址的值直接指向(points to)存在该地址的对象的值。 指针的概念 指针(pointer)是一个特殊的变量,它里面存储的数值被解释为内存里的一个地址。 指针是操作系统内存的重要途径。指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。指针所指向的内存区就是从指针的值所代表的那个内存地址开始的,长度为sizeo..

cnds123的专栏 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

c++指针详解

第二,它是一个指针,该指针的类型是TYPE*,该指针指向的类型是TYPE,也就是数组单元的类型,该指针指向的内存区就是数组第0号单元,该指针自己占有单独的内存区,注意它和数组第0号单元占据的内存区是不同的。&a的运算结果是一个指针,指针的类型是a的类型加个*,指针所指向的类型是a的类型,指针所指向的地址嘛,那就是a的地址。"的第一个字符的地址,即'H'的地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。

浪子回头 1767

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C++中的指针详解

在这个例子中,swap函数通过指针参数接收两个整数的地址,并交换它们所指向的内存地址中的值。指针是一个变量,它存储的是另一个变量的内存地址,而不是值本身。需要注意的是,在进行指针运算时要确保指针的合法性和有效性,避免出现越界访问等问题。在这个例子中,p是一个指向整数的指针变量,它存储的是变量num的内存地址。这里的“数据类型”表示指针所指向的变量的类型,“*”表示这是一个指针变量,“指针变量名”是我们给指针变量取的名字。在这个例子中,*p表示指针p所指向的内存地址中的值,即变量num的值。

yuxingwu9872的博客 4658

C++ 指针大全:从基础到进阶,一篇快速上手!

指针是 C++ 中最强大但也最具挑战性的特性之一。它直接操作内存地址,赋予了程序员极高的灵活性和控制力,但也带来了内存泄漏、悬垂指针等风险。无论是初学者还是资深开发者,理解指针的核心概念和应用场景都是掌握 C++ 的关键。 本文将带你从 **基础概念** 到 **进阶应用**,全面解析 C++ 中指针的使用场景,并结合现代 C++ 的最佳实践,帮助你高效、安全地使用指针。

m0_59246703的博客 2641

最详细的讲解C++中指针的使用方法(通俗易懂)

指针的定义与使用 函数的缺陷:一个函数只能返回一个值,就算我们在函数里面写多了return语句,但是只要执行任何一条return语句,整个函数调用就结束了。 数组可以帮助我们返回多个值,但是数组是相同数据类型的结合,对于不同数据类型则不能使用数组 使用指针可以有效解决这个问题,使用指针我们想反回几个值就能返回几个值,想返回什么类型就可以返回什么类型的值。 在程序设计过程中,存入数据还是取出数据都需要与内存单元打交道,计算机通过地址编码来表示内存单元。指针类型就是未了处理计算机地址数据的,计算机将内存

galaxyrt的博客 6万+
上一篇: HTML5新特性深度解析
下一篇: Java常用集合与映射的线程安全问题深度解析
王强你强
博客等级 码龄2年 387粉丝 34原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值