c语言中打印字符串--为什么打印出来的是乱码不是abcd

2025-04-14 02:27:35
推荐回答(2个)
回答1:

因为在函数a中,b是一个局部变量,其作用范围只在当前函数中有效,当该函数结束时,b数组已经消亡,所以即使你此时返回b的地址,里面的内容也已经不存在了(有些编译器可能会看到b数组的内容仍然存在,但这只是某个编译器的个别行为,C语言标准是不能保证数组内容仍然存在的)。

回答2:

#include 
#include 
#include 

void a(char * ss);
void main(){
 char s1[10];
 char *str=s1;
 a(str);
 printf("%s\r\n",str);
}

void a(char * ss){
 char s1[]="abcd";
 strcpy(ss, s1);
}


//放在参数中返回