数组的C数组

数组的C数组,c,arrays,C,Arrays,我试图存储一个元组,其结构如下: int var(1)([1,2,3,4]) 简单地说,我有一个2d数组,第一个元素是一个整数,第二个元素是一个值数组。这是如何在C中实现的?这是迄今为止我尝试使用3d array实现的代码: 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<numco

我试图存储一个元组,其结构如下:

int var(1)([1,2,3,4])

简单地说,我有一个2d数组,第一个元素是一个整数,第二个元素是一个值数组。这是如何在C中实现的?这是迄今为止我尝试使用3d array实现的代码:

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];
}

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;
}
#包括
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]);
返回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;
}
#包括
结构性硬币{
智力选择;
最后一枚硬币;
国际货币基金组织;
};
内部主(空){
int i;
int c[]={20,2,1};
结构货币;
答案:选择=23;
答案:A=c;
answers.numcoins=3;
对于(i=0;i
(按顺序打印20,2,1)


在本例中,我为
answers.lastcoins
分配了一个硬连线数组。更典型的情况是,您可能希望
malloc
it

就我所知,您正在为“锯齿阵列”找到解决方案……请使用
stuct
。所讨论的数组是否总是大小为4的数组?去掉所有的实现细节,并解释需要存储什么(而不是如何存储)。元组将由单个整数和一个整数数组组成,并根据需要进行填充,可能包括一个计数器,在这种情况下,它将是numcoins。你真的需要它在C中吗?这是一个需要高级语言——至少C++的例子,但在Python等方面更容易。
#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;
}