我有一个带有2个2d数组的结构
typedef struct v
{
int *b;
int *c;
} 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);
and a private function
void alterAarrays ( v* coords)
{
}
我的问题是..我想在alterArrays中传递对2ds数组的引用。另外它不会让我像这样分配2d数组的值。有什么建议吗?
答案 0 :(得分:1)
定义尺寸:
#define K 2
#define M 3
#define N 3
如果要在结构中使用数组:
定义struct(你的意思是调用这些a
和b
吗?你在代码中将它们称为这个。此外,维度最初与代码中的数组不同:
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));
如果你想在结构中使用指针:
定义struct:
typedef struct v
{
int (*a)[K];
int (*b)[N];
} v;
你需要使A
和B
全局,所以它们不在堆栈中。因此,在源文件的顶部定义它们:
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;