我正在尝试存储一个结构如下的元组:
int var(1)([1,2,3,4])
简单来说,我有一个2d数组,第一个元素是一个整数,第二个元素是值数组。这是如何在C中实现的?这是我到目前为止尝试使用3d数组实现的代码:
int answers[100][2][100];
int choice=23;
int i;
int lastcoins[100]={20,2,1};
int numcoins=3
answers[0][0][0]=choice;
for (i=0;i<numcoins;i++){
answers[0][1][i]=lastcoins[i];
}
输出:
answers[0][0][0] is 23,
answers[0][1][0] is 1961366056
答案 0 :(得分:1)
C中没有元组。
如果我正确理解你的用例,你可以使用一个指针数组。
#include <stdio.h>
int main() {
int n = 5;
int a[] = {6,4,2};
int *p[] = {&n, a};
printf("%d %d %d %d\n", p[0][0], p[1][0], p[1][1], p[1][2]);
return 0;
}
这不一定是好设计。但它回答了你的问题。
答案 1 :(得分:0)
您可以声明一个包含3个字段的结构,int
,指向int
的指针指向数组的第一个元素,第三个int
表示有多少个元素数组成立:
#include <stdio.h>
struct coins{
int choice;
int* lastcoins;
int numcoins;
};
int main(void){
int i;
int c[] = {20,2,1};
struct coins answers;
answers.choice = 23;
answers.lastcoins = c;
answers.numcoins = 3;
for(i=0; i < answers.numcoins; i++) printf("%d\n",answers.lastcoins[i]);
return 0;
}
(按顺序打印20,2,1)
在这种情况下,我将一个硬连线阵列分配给answers.lastcoins
。更典型的是,您可能希望malloc
它。