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
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
Re: I need help with pointers (& and *) and functions
This has been answered elsewhere.
Re: I need help with pointers (& and *) and functions
A couple of further points
Code:
int main( int argc, char** argv ) {
unless argc and argv are used within the code, this is usually written as
Also
Code:
if(a > b) {
return *a;
} else {
return *b;
}
as there is only one statement within each branch of the condition, the brackets are not needed and could be written as
Code:
if (a > b)
return *a;
else
return *b;
or using the tertiary operator as
Code:
return (a > b) ? *a : *b;
(which still requires the error fix as mentioned in the other place).
Looking at
Code:
pointerToMax(&x, &y);
This calls the function but does nothing with the returned value!