C字符串操作指针与数组表示法

前端之家收集整理的这篇文章主要介绍了C字符串操作指针与数组表示法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > getting segmentation fault in a small c program3个
为什么第一个版本会导致程序崩溃,而第二个版本却没有?他们不是一回事吗?

指针表示法

char *shift = "mondo";
shift[3] = shift[2];

数组表示法

char shift[] = {'m','o','n','d','\0'};
shift[3] = shift[2];

MWE

int main( void )
{
    char *shift = "mondo";
    shift[3] = shift[2];

    char shift[] = {'m','\0'};
    shift[3] = shift[2];

    return 0;
}

解决方法

没有!这是C中的重要问题之一.首先,您创建一个指向内存只读部分的指针,即您无法更改它,只能读取它.第二个,创建一个字符数组,即连续字符的内存的一部分,您可以同时具有读取和写入访问权限,这意味着您可以读取和更改数组的值.

猜你在找的C&C++相关文章