Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pass a 3D array as a parameter to function C++? Also Do global variables need to be passed into functions?

So I have several questions. First how do I pass a 3D array into a function. I need to pass the whole array as the function is to run a loop to output the contents of the array to a file. This is what I currently have

int array[5][3][3]
void function(int a[5][3][3])
{
//...
}
void function(array); //or void function(array[5][3][3]);

I have found a way to make it work using pointers to the array, however I have asked my teacher and he does not want us to use pointers.

My second question is if I plan to modify a global variable inside a function, I do not need to pass it to the function? I can just use it inside the function as I would inside main?

Yet another problem I am having now is passing a single value from an array into a function.

In a loop I need to pull a value from an array[i][j][2] (i and j being indexes of an outer and inner loop) and pass it to a function to evaluate whether or not it is greater than 90. This is for a school assignment, so understand there are certain specifications I have to meet. (Like not using pointers, and passing a whole array, and passing one value from an array, because as a class we have not yet learned how to use pointers)

like image 646
user1768079 Avatar asked Nov 10 '12 20:11

user1768079


2 Answers

Your code is correct, but actually there no such thing as an array parameter in C++ (or in C). Silently the compiler will convert your code to the equivalent pointer type, which is

int array[5][3][3];

void function(int (*a)[3][3])
{
    ...
}

So although your professor told you not to use pointers, actually you cannot avoid them, because there's really no such thing as an array type parameter in C++.

Second question, the only point of globals is that you can refer to them anywhere, so no need to pass them as parameters.

like image 105
john Avatar answered Nov 15 '22 22:11

john


For passing complex arrays I prefer to wrap them in a structure:

struct array {
    int a[5][3][3];
};

void function(struct array *a) ...

This avoids a lot of pitfalls with trying to pass arrays as function arguments.

like image 25
Ben Jackson Avatar answered Nov 15 '22 22:11

Ben Jackson