2017-10-08 17 views
1

J'ai le code ci-dessous et je ne comprends pas pourquoi c'est segfaulting. Où est-ce que je me trompe ici? J'essaie d'apprendre comment accéder/modifier un caractère **. Merci!L'arithmétique de pointeur à point ne se comporte pas comme prévu

#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 [index]' -> ' (* wordPtrPtr) [index] ' – BLUEPIXY

Répondre

1

Attention à operator precedence. Vous devez déréférencer wordPtrPtr d'abord avant d'accéder à des éléments de tableau:

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

Ou' wordPtrPtr [0] [0] = ... ' –

1

Vous pouvez également essayer quelque chose comme ça

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

Ou

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