c-指针数组,改变指针元素



如果我声明这样的指针数组:

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] = '';
}

最新更新