I need help with pointers (& and *) and functions

I'm trying to return the pointer to the variable that has the bigger value using pointers & and *. Below is the source code for my main.cc, functions.cc, and functions.h files. What did I do wrong here? I have also posted the error that it gave me.

ERROR STATEMENT:
functions.cc:9:10: error: cannot initialize return object of type 'int *' with
an lvalue of type 'int'
return *a;
^~
functions.cc:11:10: error: cannot initialize return object of type 'int *' with
an lvalue of type 'int'
return *b;
^~
2 errors generated.
make: *** [functions.o] Error 1



main.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <string>
#include <cstdio>
#include <vector>
#include "functions.h"
using namespace std;

int main( int argc, char** argv ) {

    int x = 100;
    int y = 200;
    int result = 0;

    // find out which of the two variables (x and y) is the largest
    pointerToMax(&x, &y);
}




functions.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <string>
#include <cstdio>
#include <vector>
#include "functions.h"
using namespace std;

int* pointerToMax(int* a, int* b) {
    if(a > b) {
        return *a;
    } else {
        return *b;
    }
} // end of pointerToMax 




functions.h
1
2
3
4
5
6
#ifndef FUNCTIONS_H
#define FUNCTIONS_H

int* pointerToMax(int* a, int* b);

#endif 
Hi,

In your function a and b are already pointers, the return statements dereference them, making them int again. But the return type is pointer to int.

You do need to dereference them for the if though, otherwise you are comparing the pointers themselves - probably not what you want :+)

Also, you don't do anything with the return value in main.
Topic archived. No new replies allowed.