我想了解爲什麼我的字符串的聲明方法確實並且不允許我修改它們,請讓我進行更多解釋。如果我聲明一個字符串數組,如下所示:char * Strs [] = {「Str1」,「Str2」,「Str3」}; 我可以讀取字符串並使用printf等將它們打印到屏幕上。但是我不能修改它們,例如:Strs [0] [0] ='A'對字符串沒有任何幫助打印它(我將粘貼我的測試代碼在下面...)修改字符串數組
但是,如果我聲明數組:char strs [3] [5] = {「Str1」,「Str2」,「Str3」}; 我可以使用數組方法讀取和修改字符串。
爲什麼我的修改方法在第一種情況下不起作用?
int main(int argc, char **argv)
{
/* Doesn't work
char *Strs[] = {"Str1", "Str2", "Str3"};
printf("Premod: %s\n", Strs[0]);
Strs[0][0] = 'A';
printf("Postmod: %s\n", Strs[0]);
*/
//Works
char Strs[3][5] = {"Str1", "Str2", "Str3"};
printf("Premod: %s\n", Strs[0]);
Strs[0][0] = 'A';
printf("Postmod: %s\n", Strs[0]);
return 0;
}
'字符*可疑交易報告[]'是一個指針,以你給的字符串常量數組它(這個afaik是隻讀的)。 'char strs [3] [5]'是一個2D數組,初始化爲你給它的字符串。 – 2014-10-16 18:43:15