Bonjour,

soit le code suivant :

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;
 
 
}
en C :

à 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