AutoLeaders控制组--c语言指针学习笔记

C语言指针学习笔记

  1. 什么是指针捏?

指针(pionter):个人认为指针的本质是一种变量,顾名思义,指针是一种指代性质的变量,它用于储存变量的地址,不仅可以指向整型、浮点型、字符型变量,也可以指向数组,指针的作用在于通过储存变量的地址来指向访问变量。

2.指针怎么用捏?

上述代码首先声明一个指针变量p和整型变量a,*p表示指针变量;接着将a的地      址赋值给p;最后*p 表示取指针变量p中指向的变量存储的值,&p表示取指针变量p的地址,上述过程可以称为指针变量的初始化。

这是最后的执行结果,先输出指针变量p所指向的变量储存的整型值10,接着输出指针变量p的地址;

  

同样的,指针变量初始化可以定义为NULL或0,其他任何数字和字符都不行。

  3.指针链有用吗?

指针链就是由多个指针组成的链条,一个指向一个,在后面的指针数组中应用广泛。

上述代码引用两个指针,运用两次反引用运算符,通过**p来指向*p,通过*p来指向变量a从而获取变量中储存的值。

最后程序执行的结果都是指针所访问变量地址中储存的值,所以输出相同。指针链在指针数组中可以起到简化数组储存和数组访问的作用,所以指针链非常重要。

4. 指针可以运算吗?

因为指针其实是指向一个变量,所以指针是可以进行c语言中常规的运算的,而且可以比较不同指针所指向变量中值的大小。

上述代码展现了指针的运算和大小比较,其中6*-*p1/ *p2等价于(6*(-(*p1)))/(*p2),所以指针的运算是先反引用,在依据四则运算法则先乘后除进行。

虽然指针能指向不同变量,但其实指针的大小比较并不一定有变量直接大小比较来的快。

指针的运算中用的最多的是指针的自增(p++)和自减(p--),特别是在数组中。

5. 指针怎么和数组结合?

数组内储存了大量的数据,像我们经常用的一维、二维、三维数组,我们为了简化数组储存和数组访问的方式,可以使用一串指针链来初始化和提取数组中的数据。

上述代码实现了用指针来访问数组中所输入的数字,值得注意的是指针类型必须与数组类型一致,才能保证内存空间中数组存储的地址与随着指针自增偏移后所访问的地址一致。

上述代码实现了二维数组的初始化和数组所存储的数值访问,三维数组也是以此类推,值得一提的是,我们可以想象把三维数组不断降维拆分成多个一维数组,像拼图一样将一维数组拼成一个更长的一维数组,指针的偏移量就是要靠计算三个维度的偏移量的总和来达到三维数组储存数据的访问。

6. 字符串与指针数组会冒出怎样不同的火花捏?

众所周知,字符串数组和数字数组有一些不一样,字符串数组通过将字符串拆分成一个又一个的字符来储存字符串,但是字符串一般长度不定,所以这个字符串数组的初始化带来困难。

指针数组的好处和动态分配的malloc函数有点不一样,malloc可以从堆区申请一块足够大的内存空间,不怕内存会爆,用完后要记得用free来释放内存空间;而指针数组则可以根据初始化所输入的数据长度来决定内存空间大小,不需要担心内存不够大或者内存太大。

7. 指针与函数的真正魅力

c语言中不同的库下都有大量的函数,尽管如此我们还是发现我们需要函数找不到,所以学会定义一个函数并熟练应用函数调用和嵌套会让程序模块化简洁化,而指针与函数结合会让函数更加灵活,用处更广泛。

上述代码解决了高中一道排列组合题,题目是有n个编号为1、2、3—的盒子和n个编号为1、2、3—的小球,要把小球放到不同于该小球编号的盒子内,求方法数。函数和指针结合能产生不一样的功用,这些都值得我们写代码时多思考,学以致用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

szu_ljm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值