二维数组使用指针变量做函数参数是什么意思? 在什么情况下,函数参数才使用带指针的二维数组?

2022-08-10 社会 60阅读

如果将二维数组作为参数传递给函数,那么在函数的参数声明中必须指明数组的列数,行数可以指定也可以不指定。因为函数调用时传递的是一个指针,它指向由行向量够成的一维数组。

所以如果定义一个函数,参数二维数组,那么至少要指定列数,比如:

void p (int a[2][3])//正确
void p (int a[][3])//正确
void p (int a[][])//错误
void p (int a[2][])//错误

那么如果你想要用指针来做参数传递二维数组,那你需要定义一个指向数组(大小等于二维数组列数)的指针,比如:

void p (int (*a)[3])//正确

注意:要加括号,如果写int *a[3],就只是一维指针数组。

我写了个简单案例:

#include 
void p(char (*num)[4])
{

    printf("%s\n",num[0]);
    printf("%s\n",num[1]);
}
void p2(char num[][4])
{

    printf("%s\n",num[0]);
    printf("%s\n",num[1]);
}
int main()
{
    char num[2][4]={"abc","efg"};
    p(num);
    p2(num);
    return 0;
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com