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的值等等。同事的观点是对的,但这段代码确实值得我们仔细探讨下。
相关推荐
choupiaoyi 2020-04-06
shangs00 2019-10-29
文山羊 2011-10-08
wuShiJingZuo 2008-07-27
luoshen 2011-04-29
86201242 2012-06-07
85437811 2011-11-08
良哉 2019-05-06
chengdongyuan 2015-04-13
虫二在路上 2019-04-26
TheTeenager 2009-08-27
游离丸子 2009-07-31
丁一鸣的CSDN 2012-07-12
wangchaoxiaoban 2010-11-11
houjinkai 2009-11-28
缘自一线 2009-07-25
wujimiao 2009-02-19
你好C 2018-02-23