Инкремент переменных массива внутри и снаружи главной функции на языке Си - PullRequest
0 голосов
/ 22 января 2019

В более ранних публикациях описывалось, почему имена массивов нельзя увеличивать. Но.. Как насчет этих двух разных способов увеличения?

void f(int arr[]){
  printf("%d\n",*arr++);
  printf("%d\n",*arr);
}

int main(void){
  int arr[3]={1,2,3};
  f(arr);
  // COMPILE BY COMMENTING THESE TWO LINES BELOW AND ADDING THEM
  printf("%d\n",*arr++);
  printf("%d\n",*arr);
}

Я не могу понять, почему это работает в одном случае, а не в другом. Любые предложения / рекомендации приветствуются.

1 Ответ

0 голосов
/ 22 января 2019

Поскольку void f(int arr[]) является просто синтаксическим сахаром для void f(int *arr).

Внутри функции f, arr является просто указателем, а не массивом.

Чтение эта статья SO для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...