我想了解为什么我的字符串的声明方法确实并且不允许我修改它们,请让我进行更多解释。如果我声明一个字符串数组,如下所示: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