C语言指针深入学习
C 语言的指针部分,真的是一块你越早搞明白越能省事的区域。指针其实就像是变量的“地址簿”,有了它,内存操作就灵活多了。
基础的指针类型挺好理解,像int *ptr
这种,意思就是“我想拿到某个整型变量的地址”,之后要修改那个变量,不用到处找,改指针指向的内容就行了。
再往上一层,像int **ptr
就更妙了。这玩意常在多维数组或者需要改指针本身的函数里用到,虽然初看复杂,其实只要你想想“指向的是一个指针”,思路就清楚了。
数组指针、指针数组这些,确实刚接触时会绕脑袋。但配合内存操作的例子,比如int (*ptr)[3]
,你可以把它看成一个能“指着整个数组”的指针。遍历、修改都方便,写动态结构时实用。
指针运算那块要注意,像ptr++
这类操作,其实是按数据类型走的,不是字节跳。尤其(int *)a
这样类型转换,用得好效率高,用不好容易踩坑。
动态内存分配时,malloc
、free
这对组合用得多了就顺手了。别忘了每次malloc
完都要检查一下返回值,NULL
可是常客。
数组和指针的关系,说白了就是数组名其实就是个指针。多时候你直接拿数组名去操作也没啥问题,比如int *ptr = arr
,其实和&arr[0]
没区别,灵活性还更高。
提醒一句,复杂指针别急着全懂,慢慢拆开看,找几个例子跑一跑,哪怕画个图也比死记硬背强。如果你正想捋清指针的应用场景,下面这几个链接也可以点进去看看,蛮有参考价值的。
16.34KB
文件大小:
评论区