数组指针的使用-打印二维数组
【摘要】 「这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战」正确写法:把一维数组当成是一个二维数组!!!!parr[0] == *(parr+0)->二维数组的第一行的数组名(该一维数组的数组名)parr[0][j] == *(*(parr+0)+j) ->二维数组第一行下标为j的元素 void Print1(int(*parr)[10],int sz){ int ...
「这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战」
正确写法:
把一维数组当成是一个二维数组!!!!
parr[0] == *(parr+0)->二维数组的第一行的数组名(该一维数组的数组名)
parr[0][j] == *(*(parr+0)+j) ->二维数组第一行下标为j的元素
void Print1(int(*parr)[10],int sz)
{
int i = 0;
for(i = 0;i<sz;i++)
{
printf("%d ",parr[0][i]);
//也可以写成
//printf("%d ", *(*(parr+0)+j);
//parr[0] == *(parr+0)
//parr[0][j] == *(*(parr+0)+j) == (*parr)[j]
}
}
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int sz = sizeof(arr)/sizeof(arr[0]);
Print1(&arr,sz);
return 0;
}
parr为指向数组的指针,解引用就相当于拿到了数组名
-> *parr == arr
->所以也可以写成:
写法1:printf("%d ",(*parr)[i]); //相当于arr[i]
写法2:printf("%d ",parr[0][i]);
//错误写法:*parr[i] ->parr先和[]结合
Print1(&arr,sz);
void Print1(int(*parr)[10],int sz)
int(*p1)[5]和int(*p2)[6],
p1和p2不一样!!!
p1:数组指针,类型为int(*)[5],指向的数组有5个元素,每个元素类型为int
p2:数组指针,类型为int(*)[6],指向的数组有6个元素,每个元素类型为int
数组指针指向的元素个数不可以省略!!!
5.打印二维数组两种方法
方式1:参数部分也是二维数组,
传参时:二维数组的行可以省略,列不可以省略
void Print1(int arr[][5], int r, int c)
//void Print1(int arr[3][5],int r ,int c)
{
int i= 0;
int j = 0;
for(i = 0;i<r;i++)
{
for(j = 0;j<c;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
}
int main()
{
int arr[3][5] = {1,2,3,4,5,2,3,4,5,6,3,4,5,6,7};
Print1(arr,3,5);
return 0;
}
方式2:使用数组指针
void Print1(int(*p)[5],int r,int c)
{
int i= 0;
int j = 0;
for(i = 0;i<r;i++)
{
for(j = 0;j<c;j++)
{
printf("%d ",p[i][j]);
//printf("%d ",*(*(p+i)+j);
//p[i][j] == *(*(p+i)+j)
}
printf("\n");
}
}
int main()
{
int arr[3][5] = {1,2,3,4,5,2,3,4,5,6,3,4,5,6,7};
Print1(arr,3,5); //arr是数组名,首元素地址,二维数组的数组名是第一行的地址
return 0;
}
把二维数组的每一行看成是一维数组,所以相当于传的是一维数组的地址,->int(*p)[5] !!!指向的是一维数组的数组指针
为什么方括号内元素个数是5 不是 3 : 二维数组每一行的元素个数是5
二维数组传参写成数组形式时,可以省略行,不可以省略列!
因为对一个二维数组,可以不知道有多少行,但必须知道一行有多少元素
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)