C指针基础(三)

C语言指针基础知识点(三)--指针变量作为函数参数 前期回顾 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 指针变量作为函数参数    函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。 栗子: 对输入的两个整数按大小顺序输出。现用函数处理,而且用指针类型的数据作函数参数。 #include <stdio.h> int... 阅读详情

这篇文章中,我们来讨论一下指针的算术运算。在C语言中支持3种格式的指针算术运算,而且只有三种:

  • 指针加上整数
  • 指针减去整数
  • 两个指针相减

指针加上整数

指针p加上整数j指向特定元素的指针,这个特定元素是p原先指向的元素后的j个位置。更确切地说,如果p指向数组元素a[i],那么p+j指向a[i+j]。因为通常情况下,指针就是地址,我们下面就用地址来解释其中的运算原理。

假设指针p指向int类型的数组a[9],执行p+3的操作就会得到Xp+3*4的地址(Xp表示指针p的地址,即p所表示的值;4为int型的大小,这里假设int型的大小为4)。因此,其计算公式为:Xp+i*L,其中Xp为指针的地址,i为加数,L为类型的大小。

NOTE:当将指针从一种类型强制转换成另一种类型时,就会有所不同。例如如果p是一个char*的指针,它的值为Xp,那么表达式(int *)p+7的计算结果为Xp+7*4(我们要知道强制类型转换的优先级高于加法),而(int *)(p+7)的计算结果为Xp+7。

指针减去整数

如果p指向数组元素a[i],那么p-j指向a[i-j]。其中的原理和指针加上整数类似,这里就不再赘述了。

两个指针相减

当两个指针相减时,结果为指针之间的距离(用数组元素的个数来度量)。因此,如果p指向a[i]且q指向a[j],那么p-q就等于i-j。

NOTE:不存在两个指针相加的算术运算。

++/–运算

在for循环中我们经常会用到++或者--运算,根据前面的知识,我们不难猜到指针也是支持这样的运算的。下面我以++为例进行讲解。

对于一个指针p执行p++的话,就相当于对指针进行加一操作p=p+1,++p也是一样的。和我们以前学习的一样,++放在前面与放在后面效果是不一样的:前者是先赋值,然后再自增;后者是先自增,后赋值。下面我们来看几个例子:

*p++ = j;   // 先将j赋给p指向的值(*p),然后再对指针进行自增
(*p)++;     // 自增前值为*p,之后对指针p指向的值进行自增
*++p = j;   // 先对指针进行自增,然后再对自增后的指针指向的值(*(p+1))赋值j
++*p;       // 先对指针指向的值进行自增,之后的值为(*p)+1

我们要知道后缀++符号的优先级高于*,所以*p++ = j相当于*(p++)。

指针比较

这里我们顺便介绍下指针比较。我们可以用关系运算符<、<=、>、>=和判等符==和!=进行指针比较,比较的结果依赖于数组中两个元素的相对位置。

NOTE:后两种运算中,只有两个指针指向同一数组时,才有意义。

参考资料

  1. C语言程序设计现代方法, K.N.King, 人民邮电出版社
  2. 深入理解计算机系统, 卡内基梅隆大学,机械工业出版社
  3. David8631的优快云博客:i++和++i的区别

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

机器学习入门指南:Jupyter Notebook实战 对于机器学习工程师而言,他们更擅长的是算法、模型、数据探索的工作,而对于工程化的能力则并不是其擅长的工作。Jupyter Notebook生成PMML文件1​​​​​​​。Jupyter Notebook生成PMML文件2​​​​​​​。PySpark Notebook建模 -折线图​​​​​​​。TensorFlowNotebook建模​​​​​​​。R Notebook建模 - 散点图​​​​​​​。PySpark Notebook建模​​​​​​​。R Notebook获取训练数据集​​​​​​​。 阅读详情

相关推荐

企业数字化转型的理论指南:构建未来企业的关键策略与实践路径

数字化转型已经成为当今企业发展和市场竞争的核心驱动力,而在这一过程中,企业架构(EA)发挥着至关重要的作用。这本白皮书《世界级企业架构:建立和发展EA能力的领导者方法》提供了深入的理论指导,为企业如何通过企业架构实现有效的数字化转型提供了清晰的路径。本篇文章将从,解读该书的核心内容,揭示企业在数字化转型过程中应该如何通过EA的构建和实施,驱动组织变革与技术创新。

AZone架构院的博客 3172

C语言指针基础题(三)

🐒🐒🐒🥸🥸🥸🐿️🐿️🐿️🐣🐓🏀以下是后面例题所涉及到的文章,如果有不会的可以点击了解。

2301_79178723的博客 2185

玩转Matlab-Simscape(初级)-01-从一个简单模型开始学习之旅

本文从初学者的角度分享的关于Matlab simscape 的基础内容,简单分享了Simscape搭建模型,创建子系统,修改定义参数等内容,为将来深入学习和使用simscape做铺垫。

万金油笑匠的博客 6515

C语言指针基础三

char **p 指向一级指针,用于函数修改外部指针、指针数组传参。void *p 表示内存地址,用作函数参数/返回值,兼容多指针类型。int (*q)[3] = a 用数组指针接收,数组名指向首行元素。volatile int *a 指向空间易变,防止编译器优化。int (*p)[5] 指向整个数组,用于二维数组传参等场景。int *a[5] 元素为指针的数组,常用于操作字符串数组。fun(a) 数组名作为二级指针,函数用int **接收。

NavalGun的博客 427

SGX软硬件栈(二)——硬件指令

硬件指令分为内核权限硬件指令和用户权限硬件指令。内核权限硬件指令指的是指令需要通过内核态下才能访问,缩写是ENCLS。用户权限硬件指令指的是指令用户态下便能访问,缩写是ENCLU。每一个具体的功能指令被称为叶功能,如EADD叶功能,因为叶功能之间的区分是硬件指令(如ENCLS指令:0x 0F 01 CF)的EAX值不同,因此ENCLS指令的EAX在输入时都是用作叶功能号。 内核权限硬件指令-ENCLS 如图2所示,SGX 1代指令中,ENCLS主要用于管理Enclave生命周期等。比如下文将介绍的Enc

小气球归来的博客 2889

第21章—技术管理篇(上):身为技术人该怎样带好团队并做好管理者

上节讲了职业规划和学习提升这两个话题,随着职业规划的不断落地,或者自己能力的不断提升,大家也会逐渐被提拔成“职级更高”的人。企业规模扩张时,员工数量也会变多,意味着Boss需要更多的人来辅助管理,而管理者会从外部招聘吗?也许会,但大多企业更喜欢从内部选拔,毕竟人的天性更希望找的人值得信赖。此时,一些能力不错、做事靠谱的老员工,就会被“赶上”管理者的位子。作管理不难,但想要“”就需要一定情商。

运维老生常谈 1364

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

接续上篇 [C语言基础及指针②之指针内存分析](http://www.jianshu.com/p/d556070b12ef)在上一篇中 , 我们分析了指针在内存中是怎样存储的 , 以及它是怎样操作变量的 , 接下来 , 我们谈谈 , 函数 , 二级指针 。### 函数C语言中函数的定义和java中方法的定义类似 , 只是没有public , private等这样的权限控制 , 定义如下:```c返...

weixin_42298778的博客 314

【100%通过率】华为OD机试真题2026双机位C卷 C语言 实现【加密算法】

【100%通过率】华为OD机试真题2026双机位C卷 Python&JS 实现【加密算法】有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。规则如下

MISAYAONE的博客 645

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

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

zeno_xiaojiu的博客 338

华为OD机试真题 新系统2026-04-01 Python&JS 实现【勇攀数字高峰】

请你在给定的数字地形图中寻找登山路径,数字代表当前位置的海拔高度,要求从最低海拔出发,不断攀登,最终到达最高山峰。你需要寻找所有满足条件的登山路径。地图已经保证最低海拔和最高山峰都只有一个。

MISAYAONE的博客 843

BES2300x笔记(36) -- OTA升级

哈喽大家好,这是该系列博文的第三十六篇~ 篇~ <<【系列博文索引】快速通道 >> 一、前言 BES 蓝牙方案自带 OTA(Over The Air)功能,该功能可以对蓝牙固件进行在线升级,目前该功能支持通过安卓手机(苹果手机也有对应APP,未实际测试)对蓝牙固件进行升级,以后还会支持通过 PC 端进行在线升级。在使用 OTA 功能之前,用户需安装 BES 提供的手机 apk 软件,将需要升级的固件拷贝到手机,然后通过该 apk 软件进行在线升级。

文化人的博客 5356

C语言基础(三)——指针

关于全局变量需要注意如下几点:(1)全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。(2)使用全局变量过多会降低程序的清晰性。在各个函数执行时都可能改变外部变量的值,程序容易出错,因此要有限制地使用全局变量(初试时尽量不用)。(3)因为函数在执行时依赖于其所在的外部变量,如果将一个函数移到另一个文件中,那么还要将有关的外部变量及其值一起移过去。然而,如果该外部变量与其他文件的变量同名,那么就会出现问题,即会降低程序的可靠性和通用性.

señoritaw的博客 1077

读懂ARM汇编程序,你只差这篇!保姆级教程(附完整示例剖析)!

ARM汇编中的符号、标号、伪操作有哪些?C语言和汇编语言如何混合编程?GNU ARM汇编和ARM汇编的区别有哪些?

车载系统攻城狮 1万+

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

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

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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深度学习工具包 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语言基础知识指针,C语言基础知识(三)——指针

指针定义1、指针的值表示的是它所指向对象的地址,指针+1表示的是下一元素的地址,按**字节**编址,而不是下一字节的地址。2、依照数据类型而定,short占用两字节、int占用4字节、double占用8字节。3、地址的表示方式依赖于计算机的内部硬件。[上一讲](https://www.cnblogs.com/jiaqinbi/p/11967784.html)的数组其实就是变相的在使用指针,数组名就...

weixin_39521808的博客 403

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

c 基础 (三) 指针 与const

一.指针 int main(void) { int a = 10; int* p = &a; printf("%d \n", a); 10 printf("%d \n", *p); 10 *p = 100; printf("%d \n", a); 100 printf("%d \n", *p); 100 return 0; } ...

wahaha 172

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C语言基础三之指针一

空指针 野指针 万能指针 int *p = NULL; int a =1000; p = &a; void* xx = p; *(int*)p = 1000000; printf("%d \n",*p); const 修饰指针 const int a = 10; int b = 100; //第一种 int *p = &a; p = &b; (V) *p = 1...

C安君的博客 144

C语言基础回顾三:指针深度解析

本文深入解析C语言指针的核心概念与常见陷阱。指针本质是存储内存地址的变量,关键在于理解指针地址、存储地址和指向值的三级关系。文章详细探讨指针与数组的相互转换、函数参数传递、指针数组与数组指针的区别、二级指针和函数指针的应用场景,并总结内存泄漏、悬挂指针等典型错误。掌握指针需要遵循初始化、NULL检查、释放后置NULL等安全准则,这是理解C语言底层能力的关键。指针赋予程序直接操控内存的力量,但也伴随极高风险,正确使用需要深入理解其工作原理。

Guangyu536的博客 639

(三)JNI学习之C语言基础,指针

指针 这个名词对大家来说一定不陌生,虽然可能具体是怎么回事,但多少身为程序员的我们一定是听说过,而且对于我们孤傲高冷的程序猿,在还是单身狗的情况下往往会被人戏说:你这个没有对象的野指针。哈哈,总之,指针对于C语言来讲是最基本的,但运用起来也是有难度的,下面我们就简单说一下C语言指针。 我们知道,C语言是面向过程的,没有类对象之分,对于指针来说,我们通俗的可以这么去给它一个定义。 指针:就是用来

qq_31020685的博客 565

C语言基础(三)指针

指针一、指针概念二、指针数组1.定义:2.指针数组的访问3.指针数组的类型三、指针函数四、函数指针五、函数指针数组 一、指针概念 指针也就是内存地址,指针变量是用来存放内存地址的变量 使用指针存储其他变量地址之前,必须对其进行声明 指针变量声明的一般形式为:type *var-name; 指针的访问 #include <stdio.h> int main() { int num = 10; int *p; p = &num; printf("%d

qq_42585108的博客 527

C语言基础三_指针

指针 1.直接引用: char a; a=10; 2.间接引用: char a=9; char *b;//或者char *b=&a; b=&a;//*b=&a是错的 printf("%d\n",*b);//a中的存储内容 用来存放变量地址的变量就是指针变量,b指向a,b是指针。 改变a的值:*b=10;//*b代表存储空间,即a的存储空

kldxcr的专栏 1042

C语言——深入解析C语言指针:从基础到实践从入门到精通(三)

在前面我们在使用指针访问数组的时候通常用: 使用&arr[0]的方式拿到了数组的首元素地址,但是也可以用arr获取首元素地址 发现就是数组首元素(第一个元素)地址 如果数组名是首元素地址的话,用sizeof计算出来的地址大小应该是4/8 但是之前在用sizeof计算数组大小的时候,arr作为表达式时候计算的出来的是整个数组的大小 输出的结果是20,如果是数组地址输出的应为4/8; 其实:数组名是首元素地址是正确的,但是有两个例外sizeof(数组名),sizeof中放数组名,表示为计算的是整个数组的大小

g7796815的博客 919

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

C指针基础

全栈程序员的开发日常 386

C语言修行之基础篇 (三) 指针与野指针

指针的实质就是变量,它与普通变量没有区别。指针全称为指针变量,简称为指针。 内存分布 既然指针变量和普通变量一样,那他们的赋值就可以是一样的吗? a = 8; 可以操作 p = 8; 编译器不让指针这么操作。虽然指针变量实质上也是普通变量,但是它们的用途和普通变量不同。 区别: 普通变量a空间存放的int类型的数据 指针变量p空间存放的是另外一个变量的地址,而不是存放int类型数据 p = (int *)8; 可以操作,在这里将8这个数字强制类型转换为(int *)类型的8;这里相当

weixin_43564241的博客 918

C语言基础三:指针/多级指针/指针和数组

return:中断函数,中断main程序就结束; 其后也可不跟返回值; exit中的实参可以是任意整数;

weixin_41758825的博客 266
上一篇: C指针基础(二)
下一篇: C指针基础(四)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值