#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int * add(int *, int *);
int add(int, int);
void main() {
int a, b, sum, *z;
cout << "enter the value of a & b";
cin >> a >> b;
z = add(&a, &b);
sum = add(a, b);
cout << "\nthe sum is: " << sum << endl;
cout << "the sum is :" << *z << endl; getch();
}
//.....calling with value.....
int add(int a, int b) {
int s;
s = a + b;
return s;
}
//......calling with address.......
int *add(int *a, int*b) {
int r;
r = *a + *b;
return &r;
}
なぜ間違った答えを与えるのですか:
output........ a=70 b=80 値の合計: 150 アドレスの合計: 1208
...しかし、プログラムを次のように指定すると:
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int * add(int *, int *);
int add(int, int);
void main() {
int a, b, sum, *z;
cout << "enter the value of a & b";
cin >> a >> b;
sum = add(a, b);
cout << "\nthe sum is: " << sum << endl;
z = add(&a, &b);
cout << "the sum is :" << *z << endl;
getch();
}
//.....calling with value.....
int add(int a, int b) {
int s;
s = a + b;
return s;
}
//......calling with address.......
int *add(int *a, int*b) {
int r;
r = *a + *b;
return &r;
}
それは正しい答えを与えます。
output..... a=70 b=80 値の合計:150 アドレスの合計:150。
なんで?