1sun15718 发表于 2020-6-8 15:31:57

二维数组指针运用是的问题与想法

#include<stdio.h>
int main(){
int a={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
int (*p);
p=a;
printf("%d\n",p);                      //结果为6487520
printf("%d\n",*p);                     //结果为6487520
printf("%d\n",**p);                  //结果为1
printf("%d\n",&a);                   //结果为6487520
printf("%d\n",a);                  //结果为6487520
printf("%d\n",*a);                  //结果为1
a看做:含a,a,a三个元素的一维数组。
而对于数组在定义及初始化时,是int *z=b1,
其实是int *z=&b1,即把b1首元素的地址存放进了指针的内存单元,

那么考虑数组的时候就是       &数组名(如b1)=数组名(b1),
                              所以   &a=a;----式1
                     ( 即a这个一维数组第一个元素即a的地址)
而p指向a这个含有aaa三个元素的一维数组,
也即p=&a(此时看作元素)
      把式1带入得p=a,即为a的地址,
同时*p=*&a(*&为互逆运算)
所以*p=a,和p一样都是a的地址,所以输出结果相同。
我这么完全没经过计算机的类似数学公式的代换问题大吗。。或者说这么理解对吗。。
蠢萌新,求大佬讲解一下具体的机理
页: [1]
查看完整版本: 二维数组指针运用是的问题与想法