您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
044第八章 指针04(新版) 指针数组、数组指针、多维数组指针
发布时间:2021-05-03 17:47:08编辑:雪饮阅读()
在c语言中指针数组与数组指针经常会让一些人误会,不过这个还不算什么,最绕的算是以指针的形式来表示多维数组中某行某列的值,也就是多维数组指针。
那么这里可以看看如下实例,这里自认为对这三个概念可以很清晰明了的表达出来。
#include <stdio.h>
void main()
{
int a[10] = {3, 7, 9, 11, 0, 6, 7, 5, 4, 2};
int b[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
//指针数组
int *p[10];
//数组指针
int (*p1);
int (*p2)[4];
//为指针数组赋值
for(int i=0;i<10;i++){
p[i]=&(a[i]);
}
printf("\n指针数组成员:\n");
for(int i=0;i<10;i++){
if(i==9){
printf("%p",p[i]);
}
else{
printf("%p,",p[i]);
}
}
p1=a;
printf("\n数组指针成员:\n");
for(int i=0;i<10;i++){
if(i==9){
printf("%d",p1[i]);
}
else{
printf("%d,",p1[i]);
}
}
p2=b;
printf("\n数组指针(多维)成员:\n");
for(int i=0;i<3;i++){
printf("%-12s 第%d行:","",i+1);
/*
p2+i:当前行的地址
*(p2+i):当前行第0列地址
*(p2+i)+x:当前行第x列地址
*(*(p2+i)+x):当前行第x列的值
*/
for(int x=0;x<4;x++){
if(x==3){
printf("%d(通过指针取值:%2d)",p2[i][x],*(*(p2+i)+x));
}
else{
printf("%d(通过指针取值:%2d),",p2[i][x],*(*(p2+i)+x));
}
}
printf("\n");
}
}

关键字词:指针数组,数组指针,多维数组,多维数组指针