2017-02-05 3 views
0

Я недавно начал изучать ANSI C. Я пришел через это:Добавление к вектору в C

int a[7]; 
*(a+2); 

Я не понимаю, как можно добавить 2 к a. Он добавляет 2 к каждому элементу в a?

Также, что является функцией *? Создает ли он указатель?

+0

http://duramecho.com/ComputerInformation/WhyCPointers.html Взгляните на раздел «Указатели, используемые в качестве массивов». Говорят, получите адрес, где находится a, переместитесь на 2, затем разыщите его, чтобы получить значение. Звезда (*) может использоваться для создания указателей и разыменования их. Сначала они выглядят одинаково, но они разные, и важно понять, на что вы смотрите в любом конкретном случае. –

+0

Большое вам спасибо! Этот учебник действительно полезен – user7519940

ответ

2

a+2 вызывает a как интерпретирующий элемент a. Это называется array decaying.

Затем он смещает этот указатель на 2 и dereferences (*) полученный указатель. Так что это то же самое, что и a[2].

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