指针到指针的算术表现不如预期
问题描述:
我有下面的代码,不能理解为什么它是段的。我在哪里搞乱了。我正试图学习如何访问/修改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;
}
答
小心operator precedence。您需要取消引用wordPtrPtr
首先访问数组元素之前:
(*wordPtrPtr)[0] = 'A';
(*wordPtrPtr)[1] = 'B';
(*wordPtrPtr)[2] = '\0';
+0
或'wordPtrPtr [0] [0] = ...' –
答
您也可以尝试这样
wordPtr[0] = 'A';
wordPtr[1] = 'B';
wordPtr[2] = '\0';
或者
*(*wordPtrPtr +0) = 'A';
*(*wordPtrPtr +1) = 'B';
*(*wordPtrPtr +2) = '\0';
'* wordPtrPtr [指数]的东西' - >' (* wordPtrPtr)[index]' – BLUEPIXY