2014-09-11 2 views
1

Что бы значение массива и р после выполненияОсновные арифметические операции над указателями для массивов

int array[] = {1,2,3}, *p = array; 

a. *p++; 
b. (*p)++; 
c. *p++; (*p)++ 

Я знаю ответ

a) array = {1,2,3} and *p = 2 
b) array = {2,2,3} and *p = 2 
c) array = {1,3,3} and *p = 3 

, но я просто не понимаю, как. И объяснение было бы здорово!

+0

@mclaassen: Я не думаю, что это было целью. Вопрос конкретно задает значение 'p'. Я думаю, что это было неправильное редактирование ... Я думаю, он хочет «p = массив + 1» и тому подобное. –

+0

Ну, это соответствует результатам. Я думаю, он явно интересовался значением, на которое указывает p, а не адресом памяти. – mclaassen

+0

Я ... не уверен, потому что третий элемент второго массива переключился на «2» и обратно. Хотя я думаю, что это была опечатка. Я начинаю думать, что ты прав. –

ответ

1

р изначально указывает на первый элемент массива, так что

  • а. Переместите указатель, чтобы указать на следующий элемент, который равен 2.
  • b. Разница p, которая равна 1, затем увеличивает ее на 1, что составляет 2.
  • c. Первая часть такая же, как и. поэтому указатель указывает на второй элемент, затем вы разыгрываете его, получаете 2 и увеличиваете его на 1, вы получаете 3.
Смежные вопросы