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

Thread Starter

asilvester635

Joined Jan 26, 2017
73
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
Code:
#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
Code:
#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
Code:
#ifndef FUNCTIONS_H
#define FUNCTIONS_H

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

#endif
 

AlbertHall

Joined Jun 4, 2014
12,347
In the function a and b are pointers to integers so '(a>b)' is comparing the pointers not the values.
'return *a' is trying to return the value of an integer not a pointer to an integer whereas the function is supposed to return a pointer.
Instead use '(*a>*b)' and 'return a;' and 'return b;'
 
Top