关于网友提出的“ 二位数组作为形参的两种方式,求比较”问题疑问,本网通过在网上对“ 二位数组作为形参的两种方式,求比较”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 二位数组作为形参的两种方式,求比较描述:
二位数组作为形参,目前仅知道两种形式,一种直接采用二维数组,一种是用二维指针。以下是做的一个简单的实例。
大家帮我看看,在实际应用中两者有和优缺点。当然,有更好的方式更好了。
以下均应用在字符串数组中
void array_test1(char **pArray,int row,int col)
{
char ptr[10] = {0};
for(int i=0;i<>
{
for(int j=0;j<>
{
ptr[j] = *((char*)test + col*i + j);//二维指针只表示二维数组头指针,获取值不太方便
}
}
}
void array_test(char cArray[][10],int row)
{
char ptr[10] = {0};
for(int i=0;i<>
{
ptr[i] = cArray[i];//二维数组必须给出列,赋值简单
}
}
voi main(void)
{
char str[][10]={"第一","第二","第三"};
array_test(str,3);
array_test1(str,3,10);
}
水平有限,大家包涵
解决方案1:
你弄得比我清楚多了。学习了。。。
解决方案2: void array_test1(char **pArray,int row,int col)
这种针对malloc的情形
char** parr = (char**)malloc( N*sizeof(char*) );
for (int i=0; i<>
parr[i] = (char*)malloc( sizeof(char) * M);
array_test(parr, N, M);
void array_test(char cArray[][10],int row);
针对二维数组。
char str[][10]={"第一","第二","第三"};
array_test(str,3);
error C2664: 'array_test1' : cannot convert parameter 1 from 'char [3][10]' to 'char **'
解决方案4: 还可以用数组指针
恩,常见的就这两种,