任何人都可以解释为什么这段代码不起作用,请!!非常感谢你!
#include <stdio.h>
void changer(char * tp)
{
int i=0;
tp[0]='b';
}
int main(void)
{
char *st="aaab";
changer(st);
printf("%s",st);
}
答案 0 :(得分:2)
本声明
tp[0]='b';
结果为undefined behaviour,因为tp
指向字符串文字。您不能在C中修改字符串文字。
相反,您可以使用数组:
char st[] = "aaab";
您可以修改。
答案 1 :(得分:0)
char *st="aaab";
这个陈述表明st是一个指针变量但是&#34; aaab&#34;是字符串常量。
而是尝试
char st[]="aaab";
该语句表明它将st声明为char的数组[5]并复制字符串文字的内容。这里st是一个常量指针。