数组指针的使用-打印二维数组「建议收藏」

数组指针的使用-打印二维数组「建议收藏」「这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战」 正确写法: parr为指向数组的指针,解引用就相当于拿到了数组名 -> *parr == arr ->所以也可以写成:

数组指针的使用-打印二维数组"

「这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战」

正确写法:

把一维数组当成是一个二维数组!!!!
parr[0] == *(parr+0)->二维数组的第一行的数组名(该一维数组的数组名)
parr[0][j] == *(*(parr+0)+j) ->二维数组第一行下标为j的元素 

image-20220214210000867


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

->所以也可以写成:

写法1printf("%d ",(*parr)[i]);	//相当于arr[i]
写法2printf("%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;
}

image-20220214210010610


把二维数组的每一行看成是一维数组,所以相当于传的是一维数组的地址,->int(*p)[5] !!!指向的是一维数组的数组指针

为什么方括号内元素个数是5 不是 3 : 二维数组每一行的元素个数是5


二维数组传参写成数组形式时,可以省略行,不可以省略列!

因为对一个二维数组,可以不知道有多少行,但必须知道一行有多少元素

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13853.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注