2015-12-19 3 views
-2

Я пытаюсь хранить кортеж, который структурирован так:C массив из массива

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

Насколько я думаю, вы находите решение для «зубчатого массива» ..... –

+2

Используйте 'stuct'. Является ли массив, о котором идет речь, всегда один с размером 4? –

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

Это не обязательно хороший дизайн. Но он отвечает на ваш вопрос.

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.

Смежные вопросы