当前位置:  开发笔记 > 编程语言 > 正文

修改指针指向的字符串是否有效?

如何解决《修改指针指向的字符串是否有效?》经验,为你挑选了1个好方法。

这是一个连接两个字符串的程序的简单示例.

#include 

void strcat(char *s, char *t);

void strcat(char *s, char *t) {
    while (*s++ != '\0');
    s--;
    while ((*s++ = *t++) != '\0');
}

int main() {
    char *s = "hello";
    strcat(s, " world");
    while (*s != '\0') {
        putchar(*s++);
    }
    return 0;
}

我想知道为什么它有效.在main()中,我有一个指向字符串"hello"的指针.根据K&R的书,修改这样的字符串是未定义的行为.那么为什么程序能够通过追加"世界"来修改它呢?或者是否附加不被视为修改?



1> MSN..:

未定义的行为意味着编译器可以发出执行任何操作的代码.工作是未定义的子集.


我认为这不吉利.根据我的经验,它可以在我的工作站上运行,然后在客户现场失败.我更喜欢早期的失败.
它实际上是未定义的最危险的子集,因为它可能明天停止工作.
推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有