[英]C: assign 2d array of struct
我有一个带有两个二维数组的结构......
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
的二维数组的alterArrays
。 它也不会让我像这样分配二维数组的值。 有什么建议?
定义尺寸:
#define K 2
#define M 3
#define N 3
如果要在结构中使用数组:
定义结构体(你的意思是要调用这些a
和b
吗?你在代码中将它们称为 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;
并且您需要将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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.