300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【C语言】指针表达进阶:指针在一维数组 二维数组的应用(如何用指针表达一维数组

【C语言】指针表达进阶:指针在一维数组 二维数组的应用(如何用指针表达一维数组

时间:2022-09-10 05:42:27

相关推荐

【C语言】指针表达进阶:指针在一维数组 二维数组的应用(如何用指针表达一维数组

指针可以替代数组名

1.在一维数组中:int a[9]; int *p=a;

一维数组名指向的是列!(后面总结,迷得话不用慌)

则想要获取a[i]的地址方法:a+i; 、p+i; 、p[i];

获取a[i]元素方法:*(a+i);、*(p+i);、*(p[i]);

2.在二维数组中:int a[4][9]; int (*p)[9]; p=a; //指针变量p指向包含4个整形元素的一维数组 //*p[9]是指针数组,后续文章介绍

二维数组名指向的是行!eg:a+1;//代表指向a[1][0]的地址

则想要获取a[i][0]的地址方法:a+i; 、p+i; 、p[i];

则想要获取a[0][i]的地址方法:*a+i; 、*p+i; ;

则想要获取a[i][j]的地址方法:*(a+i)+j; 、*(p+i)+j; 、*(p[i])+j;

则想要获取a[i][j]的元素方法:*(*(a+i)+j); 、*(*(p+i)+j); 、*(*(p[i])+j );

3.二维数组表现形式与对应地址:

二维数组难点

1.一维数组、二维数组对比:

一维数组名a指向列,a+1中的1表示向第一行的第一列后移一位,变成一行二列a[0][1];

二维数组名a指向行,a+1中的1表示向第一行下移一位,变成二行一列a[1][0];

2.二维数组指向行列变换(*、&):

a表示指向行(a[0][0]),a+1指向a[1][0];

公式:*指行 ->指列 、 &指列 -> 指行

*a,*(a+1)指向列:*a+1=a[0][1]; 、 *(a+1)+1=a[1][1];

&a[0]指向行(a[0]=a[0][0]):&a[0]+1=a[1][0];

( a[0] 与*(a+0)等价==》&a[0] 与&*a等价 == a,指向0行 )

3. int (*p)[4]; 在一维数组和二维数组中赋值:

一维数组:p=&a; //p指向一维数组,因为只有一列,所以:&指列->指行

(*p)[3] ==a[3];

二维数组:p=a; //p指向二维数组的0行

*(p[i])+j ==&a[i][j]; *(*(p[i])+j) ==a[i][j];

【C语言】指针表达进阶:指针在一维数组 二维数组的应用(如何用指针表达一维数组 二维数组的元素的地址 元素值)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。