hsfl.net
当前位置:首页 >> int A[5]={1,2,3,4,5},*p; p=A; printF("%D %D",*p... >>

int A[5]={1,2,3,4,5},*p; p=A; printF("%D %D",*p...

因为 *(p++) 用的是 后缀加加,按规定,在表达式内不自增,出了表达式后再自增。 所以: printf("%d %d",*p,*(p++)); 就等于: printf("%d %d",*p,*(p)); 输出 1 1 再执行 p=p+1; (地址增 1*sizeof(int) ). ---------- 你可以打印地址,看p指向...

main() { int a[]={1,2,3,4,5,6}; int *p; p=a; //p指向的数组a printf("%d ",*p); //*p指的是数组a的首地址的数据就是数组的第一个元素,是1 printf("%d ",*(++p));//*(++p)是先自加再用,p指向第一个元素,自加1后就是指向第二个元素,是2 pr...

输出1,6.因为本身数组名也是一种指针,其指针类型与数组类型相同。数组名指针指向的内容就是数组的第一个元素,也就是下标为0的元素。那么让一个指针等于数组名,其实就是让这个指针指向数组第一个元素也就是下标为0的元素。所以*p=a[0],*(p+3)=...

这个问题的关键是理解 &a a是一个数组名,也就是数组的首地址。 对a进行取地址运算符, 得到的是一个指向数组的指针 !!!!这句话尤为重要! 也就相当于 int (*p) [5] = &a; p是一个指针,它指向的是一个包含5个int元素的数组!! 那么执行p+1...

这个问题的关键是理解 &a a是一个数组名,也就是数组的首地址。 对a进行取地址运算符,得到的是一个指向数组的指针!!!!这句话尤为重要! 也就相当于 int (*p) [5] = &a; p是一个指针,它指向的是一个包含5个int元素的数组!! 那么执行p+1后...

#include void f (int *p); void main() { int a[5]={1,2,3,4,5},*r=a; f(r); //将首地址a传给函数p printf("%d\n",*r); //由于是值传递,即将r的值传给p,但是没有改变r的值, //此时*r的值既是a[0] } void f (int *p) { p=p+3; //将p所指向的...

如果指针变量p1和p2都指向同一数组中的元素,若执行p2-p1,结果是p2-p1的值(两个地址之差)除以数组元素的长度。5*4(int字节为4时)/4=5

#include int main(){ int a[]={1,2,3,4,5}; int *p=a; printf("%d %d %d\n",*(p++),*p++,*++p); return 0;}printf("%d %d %d\n",*(p++),*p++,*++p); 在同一句中 对同个变量执行多次引用同时涉及自加的, 是未定义行为. 编译器自行决定结果. 所以...

int a[5]={1,3,5,7,9},*p; *p=a[2]; // ++p是先将p执行++,再用p进行运算;而p++是先将p进行运算,再执行++ // 这里的++体现为指针指向地址的运算,即以一个int单元为单位1进行++操作 printf("%d ",*(++p)); // p-a的运算也是以一个(int)单元作为...

结果:2 main() { int a[]={1,2,3,4,5}; int *p=a;//a是数组名 表示的是数组首元素的地址 这时候p=&a[0]; printf("%d",*(++p));//p的基类型为整型,p+1相当于加四个字节 就指向了数组的第二个元素 }

网站首页 | 网站地图
All rights reserved Powered by www.hsfl.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com