为您找到"
数组问题 int a[5],*p;p=a;p=&a[0];p=&a;都是什么含义
"相关结果约100,000,000个
总之*p的结果是p所指向的东西,这个东西有这些特点:它的类型是p指向的类型,它所占用的地址是p所指向的地址。 例五: int a=12; int b; int *p; int **ptr; p=&a;//&a的结果是一个指针,类型是int*,指向的类型是int,...
条件 可以写成: if(p=(a!=0)) 这样看得清楚。里面是 赋值语句,(a!=0) 为真,真就是 1,(假才是 0)。p得1 ,条件真, 所以 执行 printf("%d\n",p); 打印出 1。
&a=a = a[0]=&a[0][0]。他们的值是一样的,都是地址,但是他们代表的步长不一样。步长体现在你做加法的时候,比如(&a++),地址就偏移了sizeof(int )*3*4的后面,到了这一片数组的后面,a++就是偏移了size...
p是地址,对地址进行自加运算,得到的值是另一个地址。而不是原先指向的那个值自加的值。懂?所以p的值为5是错的。第二个,同样是对地址进行自加运算。第三个,不能将x变量,赋值给一个地址p,即语句p=x是错的。
int a[4][5],(*p)[5]; //p表示数组指针p=a;/*有了这个定义后,数组指针p指向了二维数组a的首地址,以后通过p就可以访问a */访问格式:p[i][j] , (*(p+i))[j] , *(*(p+i)+j) , *(p[i]+j) 都表是a[i...
处。(a+5)可以看作有一个临时指针变量*temp = a+5 (p+5)同样可以看作有一个临时指针变量*temp = p+5=a+5 而a=a+5表示将a+5处的地址赋值给a,但是数组标量名的指针地址为a[0]是常量指针,因而是错误的。
有本质区别,int (*p)[4]:p的类型是指向一个数组的指针 int *p=a:p是一个指向整数的指针 初始化:int (*p)[4] = &a;要理解这个先要清楚指针的类型问题。内存地址保存在任何类型的指针中都是一个数值而已,但...
在C里 这几句 都 合法 在 高级语言里, 为了帮助程序员检测 出 程序 中 更多的 错误,加入了 更多的 检测 这些 检测 是不是 需要执行, 大多数 编译器里能设置。。p+q; p*q; p%q; 对于 程序员来说 ,这...
类型不匹配。改为:int (*p)[10],a[10];p=&a; //这样p的类型与&a的类型就一致了。