Bonjour,
soit le code suivant :
en C :
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #include <string.h> void calcul_sum1(int start, int end, int * sum) { while(start<=end){ *sum = *sum + start ; start++; } } void calcul_sum2(int start, int end, int& sum) // probleme en c à la compilation { while(start<=end){ sum=sum+start; start++; } } int main (void) { int *sum1; *sum1=0; int sum2=0; int sum3=0; calcul_sum1(0,20,sum1); printf("calcul sum1 = %d \n",*sum1); calcul_sum2(0,20,sum2); printf("calcul sum2 = %d \n",sum2); calcul_sum1(0,20,&sum3); //probleme en c++ à l'éxecution printf("calcul sum3 = %d \n",sum3); return 0; }
à la compilation j'ai le message d'erreur suivant :
fonction7.c:16: erreur: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
question : le passage par adresse est il possible en C ? ( je ne parle par du passage par pointeur qui est un passage par valeur de l'adresse de la variable sum )
en C++ :
à la compilation le code entier passe , mais à l'exécution j'ai un erreur de segmentation à cause de la ligne calcul_sum1(0,20,&sum3); cad passage par valeur de l'adresse de la variable sum3
question : ça fonctionne sous c mais pas sous c++ . Comment se fait il qu'il y ait une erreur de segmentation sous c++ ,et pas sous c ?
Merci .
edit : je suis sous Linux 2.6.33.5-desktop-2mnb x86_64
je compile avec gcc et g++ 4.4.3
Partager