2013-04-26 3 views
2

Это может показаться простым, но я не могу найти его при поиске.С инициализацией массива C, являются приемлемыми?

Я просто хочу узнать, являются ли эти два способа инициализации и массива одинаковыми, или есть предпочтительный способ сделать это? Что об этом говорит стандарт ANSI C?

int a[3] = {1, 2, 3}; 

и ...

int a[] = {1, 2, 3}; 
+5

Я думаю, что вы перепутались со вторым. Для переменной должно быть какое-то имя. –

+0

второй работает? – ryrich

+0

Спасибо, @CoreyOgburn, опечатка исправлена. – mushroom

ответ

7

int a[3] = {1, 2, 3}; является Годится

Но int [] = {1, 2, 3}; определенно является синтаксической ошибкой.

Но если ваш вопрос касается int a[] = {1, 2, 3};, то это действительное заявление.

5

Первый работает, но второй из них даст синтаксическую ошибку. Также, если вы используете sth. как это:

int a[5]={1}; 

Другие 4 числа будут инициализированы как 0.

+0

Это хороший комментарий, но не отвечайте на вопрос. Вы можете дополнительно ответить на него или добавить в ответ @Deepu? – fotanus

+0

@fotanus Спасибо, что напомнили. –

1

Добавление размер массива обычно используется, когда вы хотите больше места в вашем массиве, и вы просто хотите установить некоторые из них в декларации , В других случаях я лично предпочитаю второе обозначение, потому что оно предотвращает получение большего размера или ошибки компиляции из-за низкого размера только из-за вашего ошибочного значения для размера массива. Если у вас есть значение const для размера, и вы используете его пару раз, то первое обозначение будет более надежным. Итак, ваш ответ будет зависеть от вашей программы.

int a[CONST_SIZE] = {1,2,3}; 
int a[] = {1, 2, 3}; 
1

Я думаю, что вы сделали что-то не так со вторым! Но если второй будет:

int b[] = {1, 2, 3}; 

Две линии будут иметь одинаковый результат.
Размер массива двух массивов будет 3 * sizeof(int).
Это ваше решение, которое вы используете. Преимущество первой строки состоит в том, что вы можете легко увидеть размер массива без учета элементов в скобках, но он использует еще 1 байт в вашем файле исходного кода ;-)

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