C 关于指针的错误

标签 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);
}

最佳答案

这个声明

  tp[0]='b';

结果为 undefined behaviour因为tp 指向一个字符串文字。不允许在 C 中修改字符串文字。

相反,您可以使用数组:

 char st[] = "aaab";

您可以对其进行修改。

关于C 关于指针的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40130666/

相关文章:

c++ - 当 C 和 C++ 中严格要求内存释放时?

c - 我遇到以下代码的段错误(核心转储)。请帮助我

c - glibc 检测到 ./.a.out : free(): invalid pointer

c - 左侧后增量

C - 套接字编程 - 任意发送/接收 - 指针算术 - 数组不可分配

c++ - 指针和多维数组题

c - 如何将 C 中的源代码拆分为单独的文件?

c - 结构指针算子猜想(理论)

c - 需要帮助从 ASCII 转换为二进制

c++ - 将堆分配的引用分配给堆栈分配的变量