【发布时间】:2016-12-02 02:52:40
【问题描述】:
当我的程序运行时,IF (ch[0] == 'P') 实际上将值 'P' 放入 ch[0]。有什么想法吗?输出为:“Array is Pyz”
char *try1(char ch[]);
int main()
{
char ch[] = { 'x','y','z' }, *ch1;
ch1=try1(ch);
printf("\nArray is %s\n",ch1);
return 0;
}
char *try1 (char ch[])
{
if (ch[0]=='P')
{
ch[1]='Q';
}
return ch;
}
【问题讨论】:
-
你确定你有
==而不是=吗? -
谢谢 BJ 迈尔斯。你说的对。抱歉,我在发布此内容之前尝试过非常小心,但我错过了。我以后会更彻底的。
-
始终将文字放在等式表达式左侧的一个强有力的案例,这样编译器就可以捕捉到问题,而不必花费时间和精力调试程序。
-
数组
ch[]不是 NUL 终止的,因此对printf()的调用将导致在数组中实际 3 个字节之后输出垃圾,直到遇到 NUL 字节。这是未定义的行为,可能导致段错误事件。
标签: c arrays function if-statement