我有下面的代码,无法理解为什么它是segfaulting。我在哪里弄乱了。我正在尝试学习如何访问/修改char **。谢谢!
#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] = '\0';
printf("%s\n", *wordPtrPtr);
return 0;
}
答案 0 :(得分:1)
留意operator precedence。在访问数组元素之前,您需要先取消引用wordPtrPtr
:
(*wordPtrPtr)[0] = 'A';
(*wordPtrPtr)[1] = 'B';
(*wordPtrPtr)[2] = '\0';
答案 1 :(得分:1)
您也可以尝试这样的事情
wordPtr[0] = 'A';
wordPtr[1] = 'B';
wordPtr[2] = '\0';
或者
*(*wordPtrPtr +0) = 'A';
*(*wordPtrPtr +1) = 'B';
*(*wordPtrPtr +2) = '\0';