| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
程序如下: 
- #include <stdio.h>
 
  
- int main()
 
 - {
 
 -         int temp[5] = {1,2,3,4,5};
 
 -         int (*p2)[5] = &temp;
 
 -         int i;
 
 -         
 
 -         printf("temp = %0x\ntemp+1 = %0x\np2 = %0x\np2+1 = %0x\n", temp, temp+1, p2, p2+1);
 
 -         printf("*p2 = %0x\n*p2+1 = %0x\n*(p2+1) = %0x\n", *p2, *p2+1, *(p2+1));
 
 -         printf("*(*p2) = %0x\n*(*p2+1) = %0x\n*(*(p2+1)) = %0x\n", *(*p2), *(*p2+1), *(*(p2+1)));
 
 -         
 
 -         printf("================================================\n");
 
 -         p2++;
 
 -         printf("temp = %0x\ntemp+1 = %0x\np2 = %0x\np2+1 = %0x\n", temp, temp+1, p2, p2+1);
 
 -         printf("*p2 = %0x\n*p2+1 = %0x\n*(p2+1) = %0x\n", *p2, *p2+1, *(p2+1));
 
 -         printf("*(*p2) = %0x\n*(*p2+1) = %0x\n*(*(p2+1)) = %0x\n", *(*p2), *(*p2+1), *(*(p2+1)));
 
  
-     return 0;
 
 - }
 
  复制代码 
运行结果: 
 
 
可见: 
temp是常量,代表数组的第一个地址 
temp+1是地址计算,因为是int型数组,故temp+1相当于地址后移4个字节。 
后面的就看不懂了………… 
那么我根据结果推论一下: 
1、p2是一个指针变量,类型不能确定……每次自增数值好像都在变化……这似乎有意义,但似乎又没有意义,求解释…… 
2、*p2也是一个指针变量,类型是int指针,而且正确的指向了temp! 
还有很多疑问,我都不知道怎么写,那么大体上问一下如下几个问题: 
1、p2到底是什么变量?类型如何?指向的是什么? 
2、int (*p2)[5]这样的表达式,到底声明了什么样的变量数组?创建了几个数组?分别是什么类型? 
3、2里面这种表达式的实用性?例子? 
       |   
 
 
 
 |