指针笔记(指针数组和指向数组的指针,数组中a和&a的区别等)
指针数组和指向数组的指针
int p[4]和int (p)[4]有何区别? 前者是一个指针数组,数组大小为4,每一个元素都是一个指向int的指针 后者是指向int[4]类型数组的指针 以上代码若运行会报如下错误 main函数中定义的a数组本质是一个指向int[2]的指针,而函数形参则是一个指针数组,即形参的a是一个二维指针,所以会报错类型不匹配 若将形参改为int (*a)[2]则编译通过
数组中a和&a的区别
假如a是一个一维数组,输出a和&a发现结果相同,都是一维数组首元素的地址,但两者虽然值相同,却是不同的 这段代码是没问题的,但若将第二行的&a改为a,则会报错 即编译器认为a是int 类型的,而&a则是int ( )[4]类型的,用大白话讲就是&a编译器可以认出a是一个数组,a则不行
1 | #include "stdio.h" |
请思考一下上面的输出结果,如果你非常自信了,可以不用往下看 这个题目主要考察&a 和 a
- a 在这里代表是的数组首元素的地址即 a[0]的首地址,其值为 0x005efda0。
- &a 代表的是数组的首地址,其值为 0x005efda0。
- a+1 的值是 0x005efda0+1*sizeof(int),等于 0x005efda4。
- &a+1 的值是(0x005efda0 +(sizeof(a)= 5*sizeof(int))= 0x005efdb4 {0xcccccccc, 0xcb626a90, 0x005efdd0, 0x0029200e, 0x00000001}
二级指针
指向指针的指针
1 | //一些常用的头文件 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Doraemon's Blog!
评论