c – 为什么不同的答案?

前端之家收集整理的这篇文章主要介绍了c – 为什么不同的答案?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下是2个程序

第一

@H_403_4@#include<stdio.h> void main() { int a[5]={1,2,3,4,5}; int *p; p=&a; printf("%u %u",p,p+1); }

第二

@H_403_4@#include<stdio.h> void main() { int a[5]={1,5}; printf("%u %u",&a,&a+1); }

现在,在两个程序中.我已经在第一个代码中打印了& a的值,并且直接在第二个代码中打印.

为什么结果不一样?

我得到的答案是.

@H_403_4@for first 3219048884 3219048888 for second 3219048884 3219048904

解决方法

& a的类型是int(*)[5].因此& a 1是一个比一个更深入的指针.然而,p的类型是int *,因此p 1是比p更int 1的指针.

猜你在找的C&C++相关文章