读书人

C 指针有关问题请问

发布时间: 2012-08-09 15:59:22 作者: rapoo

C 指针问题请教
int a ;
int *p = & a;
printf ("%d",p+1-p);

为什么输出的是1 ?!

[解决办法]
因为p-p等于0了,指针和指针相加减没有任何意义的

指针值也是整数啊

你想输出一个指针指向的整型数 引用*符号
printf("%d",*p);就可以输出a了
[解决办法]
指针的运算是和其类型有关的。

C/C++ code
printf ("%d\n",(int)(p+1)-(int)p);  // 经过这样转型后就会输出4
[解决办法]
探讨

不应该是 p+1 移动的是 int型的字长 4字节吗 ?
然后 -p
引用:

指针的运算是和其类型有关的。
C/C++ code

printf ("%d\n",(int)(p+1)-(int)p); // 经过这样转型后就会输出4

[解决办法]
探讨

不应该是 p+1 移动的是 int型的字长 4字节吗 ?
然后 -p ,我怎么觉得应该是4 呢!?

[解决办法]
探讨
引用:

不应该是 p+1 移动的是 int型的字长 4字节吗 ?
然后 -p
引用:

指针的运算是和其类型有关的。
C/C++ code

printf ("%d\n",(int)(p+1)-(int)p); // 经过这样转型后就会输出4

只有当两个指针都指向同一个数组的元素时,才允许从一个指针减去另一个指针,连个指针相减的结果类型是p……

读书人网 >C语言

热点推荐