#include <stdio.h>
void change(int *num1, int *num2) {
*num1 = 50;
++*num2++;
}
int main() {
int num1 = 1; int num2 = 2;
char bye[] = "Bye World!";
printf("Hello World!\n%s\n", &bye);
printf("num1: %d, num2: %d\n", num1, num2);
change(&num1, &num2);
printf("num1: %d, num2: %d\n", num1, num2);
getchar();
return 0;
}
Глядя на следующий код, почему выход:внутренних работ вызова по ссылке
Hello World! Bye world!
num1: 1, num2: 2
num1: 50, num2: 3
вместо
Hello World! Bye world!
num1: 1, num2: 2
num1: 50, num2: 4
Под change()
, не должны num2
еще увеличивается на один после pre-increment? Я полагаю, это то, что происходит в памяти:
- num2 = 2 (до вызова, чтобы изменить())
- num2 = 3 (Преинкремент)
- num2 = 3 (значение, возвращенное до поста -increment)
- пит2 = 4 (пост-инкремент)
post-increment to pointer. – BLUEPIXY
'++ * num2 ++' == '++ * (num2 ++)' – kaylum
'++ * num2 ++' == ++ * num2, num2 ++. ваше желание '++ * num2, (* num2) ++.' – BLUEPIXY