二维数组传递参数问题

直接给出示例,来说明问题:

示例1:

 1 #include "stdio.h"
 2 
 3 void func(int argc, char *args[])
 4 {
 5     int i = 0;
 6 
 7     for (i = 0; i < argc; i++) {
 8         printf("%s
", args[i]);
 9     }   
10     
11 }
12 
13 int main(void)
14 {
15     char *args[] = {"111", "222", "333"};
16 
17     func(3, args);
18 
19     return 0;
20 }

运行结果,程序可正常运行:

 示例2:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 void func(int argc, char *args[])
 5 {
 6     int i = 0;
 7 
 8     for (i = 0; i < argc; i++) {
 9         printf("%s
", args[i]);
10     }   
11     
12 }
13 
14 int main(void)
15 {
16     char *args1[] = {"111", "222", "333"};
17     char args2[3][10];
18     int i = 0;
19 
20     for (i = 0; i < 3; i++)
21         memcpy(args2[i], args1[i], strlen(args1[i]));
22 
23     func(3, args2);
24 
25     return 0;
26 }

运行结果,出现段错误:

具体的问题原因如下:

原文地址:https://www.cnblogs.com/mrlayfolk/p/14322582.html