【发布时间】:2016-10-19 11:51:16
【问题描述】:
谁能解释为什么这段代码不起作用,请!非常感谢!
#include <stdio.h>
void changer(char * tp)
{
int i=0;
tp[0]='b';
}
int main(void)
{
char *st="aaab";
changer(st);
printf("%s",st);
}
【问题讨论】:
-
试试
char st[]="aaab"; -
当你声明一个指针变量,即使用那个 (*) 符号时,你还必须分配指针指向的空间。 malloc()。如果您不这样做,然后使用您处于未定义行为领域的指针
-
@k_kaz 当我正确理解这里的 cmets 时:stackoverflow.com/questions/40129319/difference-between-0-and-0 这将是合法的
-
@KamiKaze:将字符串文字分配给指针不是问题,但尝试修改字符串文字是。
-
@AleksiTorhamo 确实如此,但 k_kaz 并没有指出这一点。他在谈论分配它的必要性,在这一点上声明过程有效,这是错误的。修改是usr所说的问题。