C数组的数组

时间:2015-12-19 19:11:08

标签: c arrays

我正在尝试存储一个结构如下的元组:

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

2 个答案:

答案 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它。