关于指针的C错误

时间:2016-10-19 11:51:17

标签: c pointers

任何人都可以解释为什么这段代码不起作用,请!!非常感谢你!

#include <stdio.h>

void changer(char * tp)
{
    int i=0;
    tp[0]='b';
}

int main(void)
{
    char *st="aaab";
    changer(st);
    printf("%s",st);
}

2 个答案:

答案 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是一个常量指针。