C 语言一个小小问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:39:42
struct tim
{
int num;
char name[20];
int score;
}stu={123,"li",98};
main()
{
void print(struct tim *p,char *a);
char ch[10];
print(&stu,ch);
printf("%s\n",ch);
}
void print(struct tim *p,char *a)
{
if((*p).num==123)
{
a="yes";
}
}
这段程序输出不是YES是一段乱码,谁能告诉我这是怎么回事?
这位春风得意朋友显然连C的课本都没看通。

你的*a='y';*(a+1)='e';*(a+2)='s'; 这显然是可以的
C中对指针变量是可以直接写成a="yes"的,这个意思是把"yes"的地址分给a,输出时可以直接这样printf("%s",a)不信你回去试试,这个在主函数里是可以的,但是不知道怎么回事在调用函数里却不行.
strcpy(a,"yes"); 这个也可以

a是一个指针变量怎么能直接等于"yes"呢?*a="yes"
你没看懂我意思啊
你的赋植就是不对啊
*a='y';*(a+1)='e';*(a+2)='s';
或 strcpy(a,"yes");
你试试
说话真不注意好听