question about 2d matrix and pointer in the function definition

Y

Yudan Yi \(OSU\)

Hi
I define a function, such as
void matrix_multi(double **a, double **b, double **c, int n, int m, int q);
then when I called this function, I must first declare
double **a, double **b, double **c;
My question: is there any way to call the function when I declare
double a[5][10], b[10][5],c[5][5];
matrix_multi(a, b, c, 5, 10, 5); // => will give error message, what should
I do?
Thanks
Yudan
 
J

James Daughtry

A two dimensional array doesn't evaluate to a pointer to a pointer, it
evaluates to a pointer to an array of size N, so

double a[5][10];

would require one of two function parameter declarations:

void foo(double arg[5][10]);
or
void foo(double (*arg)[10]);

If you need the second dimension to be variant, then you're SOL unless
you allocate memory to a pointer to a pointer and simulate a two
dimensional array. Alternatively, you could use a container such as
std::vector:

#include <vector>

void foo(const std::vector<std::vector<double> >& arg);

std::vector<std::vector<double> > a(5, std::vector<double>(10));
foo(a);
 
R

Rolf Magnus

James said:
A two dimensional array doesn't evaluate to a pointer to a pointer, it
evaluates to a pointer to an array of size N, so

double a[5][10];

would require one of two function parameter declarations:

void foo(double arg[5][10]);
or
void foo(double (*arg)[10]);

A third version would be:

void foo(double (&arg)[5][10]);

But that would make both dimensions fixed.
If you need the second dimension to be variant, then you're SOL unless
you allocate memory to a pointer to a pointer and simulate a two
dimensional array.

Or make a one dimensional array and do the index calculation yourself.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top