-20
#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。

なんで?

4

2 に答える 2