Может ли кто-нибудь объяснить этот код полностью?Указатели до/после приращения
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *a, *s, i;
a = s = (int *) malloc(4 * sizeof(int));
for (i = 0; i < 4; i++)
{
*(a + i) = i * 10;
printf(" %d ", *(a + i));
}
printf("\n");
printf("%d\n", *s++);
printf("%d\n", (*s)++);
printf("%d\n", *s);
printf("%d\n", *++s);
printf("%d\n", ++*s);
printf("\n");
printf("%d\n", *a++);
printf("%d\n", (*a)++);
printf("%d\n", *a);
printf("%d\n", *++a);
printf("%d\n", ++*a);
return 0;
}
выход:
0 10 20 30
0
10
11
20
21
0
11
12
21
22
1) Как указатель 's' печатает значения, где *(a+i)
только были назначены значения в течение цикла?
2) Где значение точно сохраняется и сохраняется при назначении *(a+i)
?
3) В чем разница между *s++
, (*s)++
, *++s
, ++*s
?
4) Почему значения увеличиваются на 1, когда я печатаю указатель, аналогичный s?
Спасибо заранее! :)
Потребности 'домашняя работа' тег? –
Пожалуйста, найдите сайт, прежде чем спрашивать. Есть много вопросов уже в основном по одному и тому же вопросу. –
это важные вопросы и не должны быть проголосованы. Imo –