C语言中函数体内对外部字符指针赋值

2014-11-23 22:59:22 · 作者: · 浏览: 8

今天同事问我一个C程序code.c,代码如下:

#include

int test(char *b)

{

b = "123\0";

return 1;

}

int main()


{

char a[10];

test(a);

printf("a[] = %s\n", a);

return 1;

}

同事的目的是给数组a赋值一个常量字符数组,但程序打印后显示乱码。旁边的同事以C语言的语义来解释这段代码出现该问题的原因,如给test()传递的参数是a的一个拷贝,test()内部不会改变a的值等等。同事的观点是对的,但这段代码确实值得我们仔细探讨下。