C语言中二维字符串数组作为参数传递的问题!
而且它会作为参数传递给其他函数
有三种写法,大家帮忙看看哪种是对的
代码如下:
1、
#include<stdio.h>
#include<string.h>
int change(char a[2][20])
{
int i=0;
char change[10];
for(i=0;i<2;i++)
{
strcpy(change,a[i]);
printf("the change is %s\n",change);
}
return 0;
}
int main()
{
char a[2][20]={"123","abc"};
change(a);
return 0;
}
2、
#include<stdio.h>
#include<string.h>
int change(char *a)
{
int i=0;
char change[10];
for(i=0;i<2;i++)
{
strcpy(change,a[i]);
printf("the change is %s\n",change);
}
return 0;
}
int main()
{
char a[2][20]={"123","abc"};
change(a);
return 0;
}
为什么?难道不能以指针形式传递二维数组?我怎么换作一维数组就可以?
相关推荐
C语言中二维数组作为函数参数来传递的三种方法
主要给大家介绍了关于C语言中二维数组作为函数参数来传递的三种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C语言有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
C语言中二维字符数组.pdf
C语言中二维字符数组.pdf
C语言二维数组几种常用的表示方法
名称:二维数组的几种表示方法 说明:常用的有以下几种二维数组的表示方法: (1)、第一种是普通的二维数组的表示方法。 (2)、第二种是用一维数组来表示二维数组,从显示的元素地址可以看出,二维数组和一维数组表示的二维数组在内存中的储存方式其实是一样的,不过使用二维数组看起来要简单些,只要不用进行地址转换。 (3)、第三种表示是用指针数组。本例中的c[i]中的元素其实是地址。这种方法对各个元素大小不一样的情况下比较适用。如:假定有若干个不等长字符串需要我们处理,如果使用a [i ][j]结构,则j必须取这些字符串长度的最大值, 显然这种方法浪费空间。如果采用* a [i ]结构,则
C语言二维数组传参示例
C语言中,二维数组的参数传递。 例如: char str[5][100]; 如果作为参数传递,内有详细示例。 三种传参示例供参考。
C语言自定义函数如何返回数组
C语言自定义函数如何返回数组 使用 C 语言,在 main() 函数中调用了一个自定义的函数,想要从函数中获取其运行产生的字符串,直接返回数组是实现不了的,最起码也要返回数组的地址。但是在自定义函数中创建数组后,该数组本身是一个局部变量,当该自定义函数的生命周期结束后,局部变量也就被回收了,即使返回了一个代表数组的地址,但实际上其指代的内容可能已经发生了变化。 有三种方法可以实现自定义函数成功返回数组: 1、将数组定义为全局变量; 2、使用malloc在堆区开辟动态空间; 3、在调用函数时传入数组地址。 -


