我有下面的代码,不明白为什么它会段错误。我在这里搞砸了。我正在尝试学习如何访问/修改字符**。谢谢!
#include <stdio.h>
#include <stdlib.h>
int main() {
char * wordPtr;
char **wordPtrPtr = &wordPtr;
*wordPtrPtr = (char *) malloc(3 * sizeof(char));
*wordPtrPtr[0] = 'A';
*wordPtrPtr[1] = 'B';
*wordPtrPtr[2] = ' ';
printf("%sn", *wordPtrPtr);
return 0;
}
注意运算符优先级。在访问数组元素之前,您需要先取消引用wordPtrPtr
:
(*wordPtrPtr)[0] = 'A';
(*wordPtrPtr)[1] = 'B';
(*wordPtrPtr)[2] = ' ';
你也可以尝试这样的东西
wordPtr[0] = 'A';
wordPtr[1] = 'B';
wordPtr[2] = ' ';
或
*(*wordPtrPtr +0) = 'A';
*(*wordPtrPtr +1) = 'B';
*(*wordPtrPtr +2) = ' ';