Member 12896513 Ответов: 4

Указатель на массив путаницы


//when 
int *p; 
int array[5]; 
p = array;     
//what does p = array do? 
//and 
for(int i = 0; i<5; i++){
cin>>*p; 
*p++;
} 
//whats does *p++do and why is it being used


Что я уже пробовал:

попробовал переполнение стека, но не помогло

4 Ответов

Рейтинг:
30

CPallini

Цитата:
p = массив;

это то же самое, что
p = &array[0];

то есть: сделать p укажите на первый элемент массива.



Цитата:
*p++;
Это эквивалентно
*p; 
p = p + 1;
Первый оператор возвращает значение элемента, на который в данный момент указывает p Во всяком случае, такое значение не используется.
Второе утверждение увеличивает p.


Рейтинг:
2

Richard MacCutchan

Видеть Объявления Массивов[^] и Объявления Указателей[^] и все остальные разделы.


Рейтинг:
1

OriginalGriff

int *p; 
int array[5]; 
p = array;  
В спецификации говорится, что имя массива является указателем на первый элемент, поэтому, когда вы присваиваете это имя переменной, вы устанавливаете переменную так, чтобы она указывала на первый элемент массива: :
int *p; 
int array[5]; 
p = &(array[0]);  


Рейтинг:
1

Patrice T

Когда вы изучаете язык, отладчик является отличным инструментом, чтобы помочь вам изучить его, потому что благодаря отладчику вы видите, что происходит в вашем коде.
Используйте отладчик, чтобы увидеть, что делает ваш код. Он позволяет выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

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

-----
Вот ссылки на справочники книг по С и с++ авторов этих языков. Обратите внимание, что C является предком C++, поэтому знание C всегда полезно с C++.
Язык программирования Си - Википедия, свободная энциклопедия[^]
https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf[^]
http://www.ime.usp.br/~ПФ/Керниган-Ритчи/с-Программирование-электронные книги.формат PDF[^]

Язык Программирования C++ [^]