Bonjour,
Je pensais avoir compris les pointeurs, apparemment ce n'est pas le cas, pour moi, on a:
Les questions sont les mêmes, mais les réponses semblent différentes et je vois pas pourquoi..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char ** argv){ int *i = malloc(sizeof(int)); *i = 5; // *i represente la valeur pointee par i ? printf("1 - Valeur stockée a l'adresse %d : %d\n", i, *i); // i represente la valeur de i ? free(i); char *ch1 = malloc(4 * sizeof(char)); *ch1 = "Hey"; //*ch1 represente la valeur pointee par ch1 ? printf("2 - Valeur stockée a l'adresse %d : %s\n", ch1, *ch1); // ch1 represente la valeur de ch1 ? free(ch1); return 0; }
Pourquoi n'ai-je un warning que pour ch1 et non pour i ainsi qu'une erreur de segmentation ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3gcc test_chaines.c -o test_chaines test_chaines.c: In function main: test_chaines.c:14: warning: assignment makes integer from pointer without a cast
Ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 1 - Valeur stockée a l'adresse 10080272 : 5 Erreur de segmentation
Si je remplace
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 1 - Valeur stockée a l'adresse 32247824 : 5 2 - Valeur stockée a l'adresse 32247824 : I
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("2 - Valeur stockée a l'adresse %d : %s\n", ch1, *ch1);
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("2 - Valeur stockée a l'adresse %d : %s\n", ch1, ch1);
Partager