2012-06-05 5 views
0

Мне нужен массив для хранения 4 значений, определенных внутри функции fn1, поэтому я создал массив: int somearray[4]; в main(). Хотя я понимаю, что значения могут быть введены в массив индивидуально по числу: somearray[1]=3;, мои номера находятся в переменных n1, n2, n3, n4.Добавление нескольких значений в массив

Есть ли способ для этого?

Я рассмотрел возможность создания массива внутри функции, а затем передал отдельные значения в somearray[].

Я, очевидно, совершенно не знаком с C, и мысль о возвращении массива также пришла на ум. Я совершенно уверен, что это неправильно, но в любом случае это поможет получить подтверждение.

Заранее спасибо.

Для Макото:

main(){ 
int sumarray[4]; 
int n1,n2,n3,n4; 

int fn1(){ 
n1=1; 
n2=23; 
n3=29; 
n4=14; 

sumarray[]={n1,n2,n3,n4} 

return 0; 
} 

return 0; 
} 

хорошо .. по крайней мере, это то, что я пытался сделать так или иначе

+0

Можете ли вы показать код? Немного непонятно, каково ваше намерение. – Makoto

ответ

1

Вы можете сделать что-то вроде:

char somearray[] = {n1, n2, n3, n4}; 

Если написать вспомогательную функцию , выделите массив в стеке (т. е. поместите массив в локальную переменную), тогда вы не сможете его вернуть. Это связано с тем, что оно находится в стеке и в основном будет перезаписано в будущем. Например, вы не сказать:

int *f() { 
    unsigned a[] = {n1, n2, n3, n4}; 
} 

Вместо этого вы используете malloc, который выделяет память на кучного. Так же, наоборот, вы можете сказать,

int *f() { 
    unsigned *a = malloc(sizeof(int)*4); 
    ... 
    return a; 
} 
1

Удовлетворительный ошибка пытается определить массив внутри функции, когда я мог бы определить массив снаружи после fn1 был бежать. Спасибо, парни.

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