2017-10-08 11 views
1

아래 코드를 가지고 있으며 왜 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

'* wordPtrPtr [인덱스]처럼'뭔가를 시도 할 수 있습니다 ->'을 (* wordPtrPtr) [인덱스]' – BLUEPIXY

답변

1

조심해 operator precedence에주의하십시오. 먼저 배열 요소에 액세스하기 전에 역 참조 wordPtrPtr해야합니다

(*wordPtrPtr)[0] = 'A'; 
(*wordPtrPtr)[1] = 'B'; 
(*wordPtrPtr)[2] = '\0'; 
+0

또는'wordPtrPtr [0] [0] = ...' –

1

또한이

wordPtr[0] = 'A'; 
wordPtr[1] = 'B'; 
wordPtr[2] = '\0'; 

또는

*(*wordPtrPtr +0) = 'A'; 
*(*wordPtrPtr +1) = 'B'; 
*(*wordPtrPtr +2) = '\0';