|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- void fun_1(){
- int a[5] = {1,2,3,4,5};
- int *temp = a;
- for(int i = 0; i< 5; i++){
- printf("%d ",*temp++);
- }
- printf("\n");
- //运行结果:1 2 3 4 5
- //疑问一:为何该种方式可以取出数组中的内容,下面fun_2中利用数组指针反而取不出来?
- }
- void fun_2(){
- int a[5] = {1,2,3,4,5};
- int (*p)[5] = a;//
- printf("addr of a:%p\n",p);//0060Fe4a
- for(int i = 0; i < 5;i++){
- printf("%d ",*p++);
- }
- printf("\n");
- //运行结果:6356660 6356680 6356700 6356720 6356740
- //疑问二:上述方法为何没有真确取出数组中的内容
- for(int i = 0; i< 5; i++){
- printf("%d ",*(*p++));
- //数组指针是二级指针? *p 获取数组元素的地址,*(*p)获取该地址中的元素内容
- }
- printf("\n");
- //运行结果:-2 1966436733 0 0 6356956
- for(int i = 0; i<5;i++){
- printf("%d ",*(*(p + i) ));
- }
- printf("\n");
- //运行结果: 6356964 2009549335 4199040
- int (*p1)[5] = &a;
- for(int i = 0 ; i<5;i++){
- printf("%d ", *p1++);
- }
- printf("\n");
- //运行结果:1,2,3,4,5
- for(int i = 0; i<5;i++){
- printf("%d ",*(*p1 + i ));
- }
- printf("\n");
- //运行结果:-1 6356820 1966458992 1682321915 -2
- // 小甲鱼老师这样运行是对的,为何我这里运行不出来:运行环境为windows下的codeBlock
- }
复制代码
|
|