直接给出示例,来说明问题:
示例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\n", 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\n", 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 }
运行结果,出现段错误:
具体的问题原因,我还不太确定,先将问题记录在这里。