2014-11-10 2 views
0

Я просто хотел знать, есть ли разница между определениями int arr; и int arr[1]; (за исключением доступа, я знаю, что нам нужно получить доступ как arr и arr[0]). По моим сведениям, оба выделяют одинаковый размер памяти (sizeof(int)). Есть ли другие сведения об этих распределениях.Есть ли разница между определениями int arr; и int arr [1];

+1

Тип 'arr' отличается в каждом конкретном случае. – juanchopanza

+1

Единственное, что касается этих двух, это то, что им нужен такой же объем памяти. Все остальное по-другому. Они разные, их нужно использовать по-разному. –

+1

Я полагаю, что когда 'arr [1]' является локальной переменной, она всегда будет выделена в стеке, она не может быть выделена в регистре. На данный момент я не вижу другой разницы в распределении пространства. – Marian

ответ

0
int arr; 

Здесь arr является переменным типом int.sizeof (ARR) будет возвращать размер целого числа.

int arr[1]; 

Здесь arr является массив типа междунар который может содержать элементы типа междунар. В этом случае он может содержать только один целочисленный элемент .sizeof (arr [0]) вернет размер первого элемента массива, который является целым числом.

Для локальной переменной и массива память выделяется в стеке.

0

я думаю int arr[1] выделить больше памяти, чем int arr тот факт, что int arr[1] создать указатель на первый элемент. Таким образом, у вас есть указатель arr, то есть зарегистрированное значение &arr[0] и значение arr [0].

Также вы можете получить доступ к обр [0] непосредственно *arr

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