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

今天同事问我一个C程序code.c,代码如下:
 
#include  <stdio.h>
 
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的值等等。同事的观点是对的,但这段代码确实值得我们仔细探讨下。

相关推荐