二层指针做函数参数,为什么不能把数组地址直接传入?
22 void fun(char **p)
23 {
24 // *p= "abc";
25 strcpy(*p,"abc" );
26 printf("%x, %x, %x\n", **p, *p, p);
27 }
28 int main()
29 {
30 char a[4];
31 char *q;
32 memset(a,0,4);
33 q=a;
34 fun(&q);
35 printf("%s, %x, %x\n", q,q,&q);
36 printf("%s, %x\n",a,a);
37 return 0;
38 }
~
jzhang@lyra:~/test> ./test
61, bfc3fcd0, bfc3fccc
abc, bfc3fcd0, bfc3fccc
abc, bfc3fcd0
22 void fun(char **p)
23 {
24 // *p= "abc";
25 strcpy(*p,"abc" );
26 printf("%x, %x, %x\n", **p, *p, p);
27 }
28 int main()
29 {
30 char a[4];
31 char *q;
32 memset(a,0,4);
33 q=a;
34 fun(&a);
35 printf("%s, %x, %x\n", q,q,&q);
36 printf("%s, %x\n",a,a);
37 return 0;
38 }
jzhang@lyra:~/test> ./test
Segmentation fault |