2

背景

我有一个带有两个二维数组的结构......

typedef struct v
{
    int *b;
    int *a;
} v;

在我的主要功能中,我有......

int A [M][K] = {{2,2},{2,2}, {3,2} };
int B [K][N] = {{2,2,2},{2,2,2}};
struct v *data= (struct v *) malloc(sizeof(struct v));
data.a->A;
data.b->B;
pthread_create(&multiplicationWorker, NULL, (void *) &alterAarrays,  data);

...和一个私人功能...

void alterArrays ( v* coords)
{
    ...
}

问题:

我想传递对内部二维数组的引用alterArrays。它也不会让我像这样分配二维数组的值。有什么建议么?

4

1 回答 1

2

定义尺寸:

#define K 2
#define M 3
#define N 3

如果要在结构中使用数组:

定义 struct (您的意思是调用这些ab吗?您在代码中将它们称为 this 。此外,维度最初与代码中的数组不同:

typedef struct v
{
    int a [M][K];
    int b [K][N];
} v;

然后是副本:

int A [M][K] = {{2,2},{2,2}, {3,2} };
int B [K][N] = {{2,2,2},{2,2,2}};
struct v *data= (struct v *) malloc(sizeof(struct v));

memcpy(data->a, A, M * K * sizeof(int));
memcpy(data->b, B, K * N * sizeof(int));

如果要在结构中使用指针:

定义结构:

typedef struct v
{
    int (*a)[K];
    int (*b)[N];
} v;

而且您需要 makeABglobal,因此它们不在堆栈中。所以在源文件的顶部定义它们:

int A [M][K] = {{2,2},{2,2}, {3,2} };
int B [K][N] = {{2,2,2},{2,2,2}};

然后是作业:

struct v *data= (struct v *) malloc(sizeof(struct v));

data->a = A;
data->b = B;
于 2012-10-21T21:07:31.947 回答