【发布时间】:2018-01-23 18:11:36
【问题描述】:
案例 1:char s[][6]={"Hello","world"};
在这种情况下,一个静态数组被分配在只读内存中,然后从那里将元素复制到数组中。
在案例 2 中。
案例 2:char* s= "hello world"; 将把它放在只读内存中。
所以我的问题是为什么
char s[][6]={"Hello","world"};
s[1]="lucky"; //is illegal
因为如果元素是从只读内存复制的,那么为什么这个语句s[1]="lucky"; 不能从只读内存复制到数组,因为还为这个字符串文字分配了一个数组,然后从那里复制元素到 s[1]。
我已经阅读了很多答案,所有人都在说有什么区别,但没有人说为什么?请解释一下,因为我是初学者。
【问题讨论】:
-
爱豆请推荐一个
-
在 C 中你不能复制这样的字符串 - 使用
strcpy。 -
char s[][6]是一个char类型的二维数组。您正试图将其视为char *的数组。 -
s[1]="lucky";将因编译器错误而失败。它试图在s[1]中放置一个指针,这不是一个指针变量。 -
赋值 != 初始化