Рубрики

Указатель против массива в C

В большинстве случаев доступ к указателю и массиву может рассматриваться как один и тот же, основные исключения:

1) оператор sizeof
o sizeof (массив) возвращает объем памяти, используемый всеми элементами в массиве
o sizeof (pointer) возвращает только объем памяти, используемый самой переменной указателя

2) оператор &
o & array является псевдонимом для & array [0] и возвращает адрес первого элемента в массиве
o & pointer возвращает адрес указателя

3) строковая литеральная инициализация массива символов
o char array [] = «abc» устанавливает первые четыре элемента в массиве в «a», «b», «c» и «/ 0»
o char * pointer = «abc» устанавливает указатель на адрес строки «abc» (которая может быть сохранена в постоянной памяти и, следовательно, неизменна)

4) Переменной указателя может быть присвоено значение, тогда как переменной массива не может быть.

int a[10];
int *p; 
p=a; /*legal*/
a=p; /*illegal*/ 

5) Разрешается арифметика с переменной указателя.

p++; /*Legal*/
a++; /*illegal*/ 


Пожалуйста, обратитесь Разница между указателем и массивом в C? Больше подробностей.

Ссылки: http://icecube.wisc.edu/~dglo/c_class/array_ptr.html

Рекомендуемые посты:

Указатель против массива в C

0.00 (0%) 0 votes