- 论坛徽章:
- 0
|
我有这么一段小程序,用来试验2维字符串数组的传递:
#include<stdio.h>
#include<string.h>
void f(char (*c)[2][4]){
printf("c[0]=%s,c[1]=%s\n",*(c[0]),*(c[1]));
strcpy(*(c[0]),"123");
}
int main(){
char buf[2][4]={"xyz","abc"};
printf("size=%d\n",sizeof(buf));
printf("buf[0]=%s,buf[1]=%s\n",buf[0],buf[1]);
f(&buf);
printf("after f()\n");
printf("buf[0]=%s,buf[1]=%s\n",buf[0],buf[1]);
return 0;
}
|
编译并运行,发现在函数f的内部,打印的第二个字符串每次都是不同的乱码
cling@d4etch:~$ gcc p.c&&./a.out
size=8
buf[0]=xyz,buf[1]=abc
c[0]=xyz,c[1]=`w뿨w뿨^
after f()
buf[0]=123,buf[1]=abc
cling@d4etch:~$ gcc p.c&&./a.out
size=8
buf[0]=xyz,buf[1]=abc
c[0]=xyz,c[1]=0 |
|