C语言基础及指针②之指针内存分析

C语言基础之指针练习题 分享一个关于指针的小题 #include<stdio.h> void foobar(int a, int* b, int** c) { int* p = &a; *p = 101; *c = b; b = p; } int main() { int a = 1; int b = 2; int c = 3; int* p = &c; foobar(a, &b, &p); printf(“a=%d, b=%d, c=%d, *p=%d\n”, a, b, c, *p) 阅读详情

在上一篇中 , 我们了解了C语言的基本语法 , 以及简单指针 , 也知道 , 指针是C语言的核心 , 那么我们今天就来简单剖析一下指针 , 了解他是怎么的神奇 。

今天是七夕 , 祝各位情人节快乐 。

指针的基本写法是int i = 10 ; int *p = &i ; , 由此我们可以看出 , 指针和变量类似 , 其实 , 指针也是变量 , 我们printf("%#x",p) , 输出的就是i的地址值 , p就是一个变量 , 只是这个变量不普通 , 他可以通过他里面地址 , 操作这个地址里面的内容 , 这就是其强大之处 。那么他在内存中是怎样的呢 ? 下面我们来看看 。


指针操作内存图.png

由图上我们可知 , 指针变量就是用来操作内存空间的 , 当然也可以作为变量存储 , 例如int *p = 100 ; printf("指针变量的值:%d\n",p)这样指针变量p就会输出100 。

既然我们的指针也是变量 , 那么也是可以进行运算的 , 下面我们就来看看 , 指针是怎么样进行运算的 。我们以一个数组输出为例 , 来验证指针变量的运算 , 如下:

void main() {

    int arr[] = { 89,20,13,45,68 };

    // 数组地址 , 默认是首个元素的内存地址
    printf("输出数组arr地址:%#x\n", &arr);
    printf("这样也可以获取到数组的地址:%#x\n", arr);
    printf("第一个元素的地址: %#x\n", &arr[0]);

    int* p = &arr;
   // 以普通的方式进行数组输出
    int i = 0;
    for (; i < 5; i++)
    {
        printf("数组元素:%d\n", arr[i]);
    }

    printf("\n");

    // 以指针运算的方式进行数组输出
    int j = 0; 
    for (; j < 5; j++)
    {
        printf("数组元素的值 : %d\n", *p);
        p++;
    }

    printf("\n");

    getchar();
}

`

从上述代码我们可以看出 , 我们通过变量指针p进行p++操作 , 来获取到数组中的值 , 这样操作的可能是 , 因为数组存储数据的内存空间是连续的 , 可以可以通过同类型的指针 , 进行指针运算来进行内存操作 , 值得注意的是 , 指针类型必须和数组类型一致 ,才能进行内存操作 。由此 , 我们可以得出指针为什么需要类型的答案了:

指针是存储的地址是开始读取的位置 , 类型是读取的长度 , 操作类型必须一致 。

下面我们来做一个实验 , 如果使用不同类型的指针来读取数组 , 这样操作会出现什么情况 , 我们将上述代码的int *p = @arr ;更改为float *p = &arr;会出现什么情况呢 ? 结果如下:

数组元素的值 : 0
数组元素的值 : 0
数组元素的值 : 0
数组元素的值 : 0
数组元素的值 : 0

我们使用float类型的指针 , 去操作int类型的数组 , 就完全取不到值了 。为什么会这样呢 ? 我们一探究竟 , 打断点去查看内存的 , 我们输出一下指针变量的值 , 然后对照数组变量的地址,如下:

指针变量存储的值:0x101fdac -- 取值:0
数组元素:89 == 数组元素地址:0x101fdac
数组元素:20 == 数组元素地址:0x101fdb0
数组元素:13 == 数组元素地址:0x101fdb4
数组元素:45 == 数组元素地址:0x101fdb8
数组元素:68 == 数组元素地址:0x101fdbc

数组元素的值 : 0 == 指针存储的地址:0x37064000
数组元素的值 : 0 == 指针存储的地址:0x36e40000
数组元素的值 : 0 == 指针存储的地址:0x36da0000
数组元素的值 : 0 == 指针存储的地址:0x36f68000
数组元素的值 : 0 == 指针存储的地址:0x37010000

我们可以看到 , 几乎完全不一致了 , 地址都不相同了 , 我有一个疑惑 , 在第一次打印float指针变量值的时候 , 存储的是数组第一个变量的内存地址 , 但是在循环遍历的时候 , 却不一样了 , 目前不知道是什么原因导致的 , 有知道的希望告知一下 。上述输出完整程序:

以上问题有一个答案了 , 虽然float和int类型都是四字节的 , 但是int 和 float的存储方式不一样 , 所有指针运算会出现不一样 。

void main() {

    int arr[] = { 89,20,13,45,68 };

    // 数组地址 , 默认是首个元素的内存地址
    printf("输出数组arr地址:%#x\n", &arr);
    printf("这样也可以获取到数组的地址:%#x\n", arr);
    printf("第一个元素的地址: %#x\n", &arr[0]);

    //int* p = &arr;
    float *p = &arr;

    printf("指针变量存储的值:%#x -- 取值:%f\n", p,*p);

    int i = 0;
    for (; i < 5; i++)
    {
        printf("数组元素:%d == 数组元素地址:%#x\n", arr[i],&arr[i]);
    }

    printf("\n");

    int j = 0; 
    for (; j < 5; j++)
    {
        printf("数组元素的值 : %f == 指针存储的地址:%#x\n", *p,p);
        p++;
    }

    printf("\n");


    getchar();
}

这次我们分析了指针在内存中的情况 , 以及指针变量的简单运算 , 下次我们来聊聊 , 指针在方法中的运用 , 以及二级指针 。

C语言基础二-指针,预处理命令 image.png怎么样对付这些复杂指针:C语言标准规定,对于一个符号的定义,编译器总是从它的名字开始读取,然后按照优先级顺序依次解析。注意,从名字开始,不是从开头也不是从末尾,这是理解复杂指针的关键!对于初学者,有几种运算符的优先级非常容易混淆,它们的优先级从高到低依次是:1)定义中被括号( )括起来的那部分。2)后缀操作符:括号( )表示这是一个函数,方括号[ ]表示这是一个数组。3)前缀操作符:星号*表示“指向xxx的指针”。 阅读详情

相关推荐

绑定压力的计算方法

压强的公式为P=F/S,其中P为ACF要求的本压压强范围,S为受压面积,F为本压压头施加的力。绑定参数需要按线体按压头进行DOE确认,并使用DOE确认好的参数按压头重新绑定标识好送ACF厂商实测固化率、粒子变形的情况,避免绑定参数导致的异常,在绑定参数的设定过程中温度和时间可以使用仪器实测但绑定的压力则需要换算。工程上绑定压力换算的原则是:1、FPC属于柔性物料,柔性物料的受压面积按FPC绑定的受压面积=FPC绑定的长度。一、工程上FOG FPC本压压力换算(柔性材料以挤压的接触面积=受力面积)F=P。

weixin_53757859的博客 1533

C语言基础及指针③函数与二级指针

在上一篇中 , 我们分析了指针在内存中是怎样存储的 , 以及它是怎样操作变量的 , 接下来 , 我们谈谈 , 函数 , 二级指针 。 函数 C语言中函数的定义和java中方法的定义类似 , 只是没有public , private等这样的权限控制 , 定义如下: 返回值类型 functionName(参数类型 参数名称 , 参数类型 参数名称) { // 函数体 }

Horace 485

DCDC--控制方式(Control Mode)

DCDC反馈控制方式

网始如芯个人博客 1万+

小说《疯狂的程序员》~经典语录

1.要么做第一个,要么做最好的一个。2.什么是鸡肋课?就是每个人都在自己课表的这门课旁边标注一个“可旷”或者“选修”。3.什么程序优化啊,都抵不上有钱,有钱就是最好的优化。说什么“效率就是金钱”,其实“金钱就是效率”。4.中国人和外国人很大不同就在于外国人总想热衷于第一时间把自己的新发现公布出来以此向广大人民群众展示自己的水平。中国人往往喜欢把自己的新发现阴在心里,自己偷偷垄断享用。唯恐被

Struggle For Network Security 1500

从零构建EtherCAT从站:SSC工具配置与TwinCAT3 PDO/SDO调试实战

本文详细介绍了从零构建EtherCAT从站的完整流程,重点讲解SSC工具配置与TwinCAT3 PDO/SDO调试实战。通过解析EtherCAT通信机制、PDO与SDO的核心概念,提供SSC工具配置技巧、XML文件生成与校验方法,以及TwinCAT3环境下的调试经验,帮助开发者高效完成EtherCAT从站开发与优化。

weixin_42520573的博客 339

Gromacs基础教程一:入门建议

本系列教程针对的群体:非计算化学专业,而是偏生物方向的、有少量分子动力学模拟需求的人群。

m0_67843839的博客 8572

C语言指针:内存和指针

内存单元的编号=地址=指针

m0_62183318的博客 1439

学习笔记7--激光雷达标定

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢! 此专栏是关于《自动驾驶汽车环境感知》书籍的笔记。 2.激光雷达标定 2.1 概述 激光雷达内参标定:内部激光发射器坐标系与雷达本

FUXI_Willard 8026

C语言:指针

讲解指针基本概念

博客网站 https://async-area.com 1560

YOLOv11 + TensorRT 在 Jetson 设备上的实时部署

YOLOv11 + TensorRT 在 Jetson 设备上的实时部署

p6666666668的博客 1588

AI穿透式智慧粮仓

本报告基于 2025-2026 年全国多地智慧粮储实践案例,系统分析了 "AI + 穿透式" 智慧粮储体系的技术架构、AI 算法应用、提质增效成效、区域差异化特点及未来发展趋势。该体系通过多模态感知、智能算法与管控平台的深度融合,实现粮食存储全流程精准感知、智能预警与科学调控,显著降低储粮损耗与运营成本,大幅提升储粮安全水平与管理效率。报告梳理了各地差异化实践路径,提出针对性发展建议,为推动我国粮食仓储高质量发展、筑牢国家粮食安全防线提供参考。

reset2021的博客 229

c语言—指针详解***内存地址***指针字节数***注意事项

初步认识指针、内存地址的概念内存地址地址的相关运算指针变量声明指针变量指针变量的字节数—根据操作系统的位数而不同指针的移动多级指针指针注意事项移动不越界定义指针不省 *初始空值可用NULL,内存地址即内存的地址,在创建变量时,计算机会分配一个内存空间用来存放变量,内存地址就是这个内存空间的地址,对每个字节来说都有自己的地址,在输出变量时,计算机就会找到这个变量的内存空间,从内存空间中取出变量。

努力让自己的能力配得上梦想. 2069

智慧加油站小程序数据库设计文档

【代码】智慧加油站小程序数据库设计文档。

低代码布道师的博客 1402

c语言内存分析指针,C语言基础及指针②之指针内存分析

在上一篇中 , 我们了解了C语言的基本语法 , 以及简单指针 , 也知道 , 指针是C语言的核心 , 那么我们今天就来简单剖析一下指针 , 了解他是怎么的神奇 。今天是七夕 , 祝各位情人节快乐 。指针的基本写法是int i = 10 ; int *p = &i ; , 由此我们可以看出 , 指针和变量类似 , 其实 , 指针也是变量 , 我们printf("%#x",p) , 输出的就是...

weixin_42347660的博客 127

深度学习工具包 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")

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C/C++编程笔记:指针篇!从内存理解指针,让你完全搞懂指针

C语言最核心的知识就是指针,所以,这一篇的文章主题是「指针与内存模型」!说到指针,就不可能脱离开内存,学会指针的人分为两种,一种是不了解内存模型,另外一种则是了解。 不了解的对指针的理解就停留在“指针就是变量的地址”这句话,会比较害怕使用指针,特别是各种高级操作。而了解内存模型的则可以把指针用得炉火纯青,各种 byte 随意操作,让人直呼 666。 注:这篇文章好好看完一定会让你掌握好指针的本质! 一、内存本质 编程的本质其实就是操控数据,数据存放在内存中。 因此,如果能更好地理解内存的模型,

致力于C语言C++知识分享! 2万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【C语言基础】:深入理解指针(二)

⼀维数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式。

书山有路勤为径,学海无涯苦作舟。 2502

C语言重点——指针篇(一文让你完全搞懂指针)| 从内存理解指针 | 指针完全解析

有干货、更有故事,微信搜索【编程指北】关注这个不一样的程序员,等你来撩~ 注:这篇文章好好看完一定会让你掌握好指针的本质 C语言最核心的知识就是指针,所以,这一篇的文章主题是「指针与内存模型」 说到指针,就不可能脱离开内存,学会指针的人分为两种,一种是不了解内存模型,另外一种则是了解。 不了解的对指针的理解就停留在“指针就是变量的地址”这句话,会比较害怕使用指针,特别是各种高级操作。 而了解内存模型的则可以把指针用得炉火纯青,各种 byte 随意操作,让人直呼 666。 一、内存本质 编程的本质其实就是.

编程指北 9241

C语言基础之【指针】(下)

本篇博客是《C语言基础之指针》知识点的大总结(下)。主要涉及:指针和字符串、字符串应用模型、字符串处理函数的内容。包括:strchr()、strrchr()、strstr()、strtok()、strcpy()、strncpy()、strcat()、strncat()、strcmp()、strncmp()、sprintf()、sscanf()、atoi()函数的详解。同时附有代码示例使概念更通俗易懂。

序属秋秋秋的博客 1324

C语言基础——指针

C语言基础——指针

2401_88201300的博客 1816

C语言中的指针:掌握内存的钥匙

`C`语言是一种结构化编程语言,它提供了对硬件底层的直接访问,其中最强大的特性之一就是指针。指针允许程序员直接操作内存地址,这对于理解程序的内部工作原理以及优化代码性能至关重要。本文将深入探讨C语言中指针的概念、使用方法以及一些高级技巧。

前端开发工程师 3206

C语言基础--初识指针

C语言初识指针,适合一点点指针基础的

人生得意须尽欢 2340

Java与C语言核心差异:从指针到内存管理的全面剖析

Java和C语言在指针和内存管理上的差异,本质上是两种语言设计哲学的体现。C语言追求对底层的极致控制,赋予程序员强大的操作能力,但同时也要求程序员具备更高的技能水平,以避免内存管理中的各种问题;Java则更注重开发效率和安全性,通过自动垃圾回收和隐式引用,减少了低级错误的发生,让开发者可以更专注于业务逻辑。在实际开发中,我们需要根据具体的应用场景和需求,合理选择使用Java或C语言。

user340的博客 2143

C语言基础——彻底搞懂C指针(六)

C语言基础,指向指针的指针

全栈程序员的开发日常 1107
上一篇: Android NDK开发之C语言基础及指针①
下一篇: C语言基础及指针③函数与二级指针
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值