如果我声明这样的指针数组:
char* arr[5] = {"Mercury",
"Mercury",
"Venus",
"Earth",
"EArth"};
然后我可以改变这些指针中的歌唱吗?我试过做类似的事情
*(*(arr + 1) + 1) = 'i';
但它不起作用,我得到了内存转储。有没有办法做到这一点,或者我必须以不同的方式声明?
有没有办法做到这一点,或者我必须以不同的方式声明它?
char* arr[5] = {"Mercury", "Mars", "Venus", "Earth", "Pluto"};
arr
是指向字符串文字的5个char
指针的数组。任何修改字符串文字的尝试都会调用未定义的行为,因此您无法修改它们。
如果你想修改内容,你需要把它们定义为char
的二维数组:
char arr[5][10] = {{"Mercury"}, {"Mars"}, {"Venus"}, {"Earth"}, {"Pluto"}};
并使用
strcpy(arr[0], "Uranus");
size_t len = strlen(arr[0]);
for(size_t i = 9; i > (len + 1); i--) // To remove all left characters from prev. string.
{
a[0][i] = ' ';
}