形如:int * p[10]//一个指针数组,数组里面有10个元素,每一个元素都是一个int型的指针
数组内的每一个元素都是一个指针变量(这时注意每个元素所占的内存单元大小是地址的长度而不是类型长度)
2、数组指针:形如:int (* b)[10]//一个数组指针,指针指向一个列长度为十的一个二维数组的第一行的行地址。
也称作行指针,该指针指向了一个长度为10的数组的行首地址;
如:b表示第一行的首地址;b+1表示第二行首地址
*(b) = b[0][0] *(b+1) = b[1][0]*(*(b+i)+j) = b[i][j]1
3、指向指针的指针:形如: int **c = p//二级指针c,指向了指针数组p的首地址&p[0],即指向了指针数组的第一个指针的地址
该指针大小也是取决于 *** 作系统,它跟一级指针其实本质上是没有差别的,只是说是有连环指向的这种感觉。
c是指向指针的指针,因此它使用间接取址符时需要两次才能取出目标的内容。
比如:*c表示的是p[0]的地址,而**c表示的是p[0]地址中的内容
c == &p[0] // 指针数组中第一个指针元素的地址
*c == p[0] // 指针数组中第一个指针元素地址的内容,即目标变量的地址
**c == *p[0]// 指针数组中第一个指针元素指向的目标变量值
要这么复杂干什么?直接 if('0')恒唯1. 知道为什么?
或者
void main(int _)
{
if(_)
{
printf("dsds")
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)