1.在函数中传递二维数组,可以用指针的形式,也可用数组的形式,但是一定要每一行的长度(也就是列的个数)
例如:int function(char (*p)[10])或者 int function(char arr[3][10])
如果不定义行的长度,就无法知道什么时候进入下一行
2.对二维数据赋值字符串时,可以在初始化时赋值,也可以在利用strcpy
1 #include <stdio.h>
2 #include <string.h>
3
4 int function(char (*p)[10]) /*第一种传递方式,使用指针的形式,不是直接使用**p这种模式*/
5 {
6 int i=0;
7 for(i=0; i<3; i++)
8 {
9 strcpy(*p, "hello11");/*对数组每一行进行赋值*/
10 p=p+1;/*二级指针加1,指向下一行*/
11 }
12 p=p-3;/*指针回复到最开始的位置*/
13 for(i=0; i<3; i++)
14 {
15 printf("p = %s\n", *(p+i));
16 }
17 return 1;
18 }
19
20 /*
21 int function(char arr[3][10])/*第二种传递方式*/
22 {
23 int i=0;
24 for(i=0; i<3; i++)
25 {
26 strcpy(arr[0], "hello");
27 strcpy(arr[1], "asdd");
28 strcpy(arr[2], "word");
29 }
30 for(i=0; i<3; i++)
31 {
32 printf("p = %s\n", arr[i]);
33 }
34 return 1;
35 }*/
36 int main(void)
37 {
38 int ret = 0;
39 int i;
40 char arr[3][10] = {0};/*二维数据组初始化*/
41 char *str1="kayshi";
42 char *str2;
43 str2=str1;
44 ret = function(arr);/*函数传递二维数组*/
45 for(i=0; i<3; i++)
46 {
47 printf("%s\n",arr[i]);
48 }
49 printf("str1:%s\n", str1);
50 printf("str2:%s\n", str2);
51 return 0;
52 }
p = hello11
p = hello11
p = hello11
hello11
hello11
hello11
str1:kayshi
str2:kayshi