Я новый студент в программировании на языке C. Я сделал небольшую программу, чтобы увидеть в действии все комбинации ++ в указателях. Так что я codded: (я запустить его в Ubuntu с помощью VirtualBox)постепенно увеличивайте адрес указателя
#include <stdio.h>
main()
{
int num = 1;
int *p = #
printf("\nnum position: %p num value: %d\n", p, num);
*p += 1;
printf("\n---- *p += 1; -----\n");
printf("num position: %p num value: %d\n", p, num);
*p++;
printf("\n---- *p++; -----\n");
printf("num position: %p num value: %d\n", p, num);
(*p)++;
printf("\n---- (*p)++; -----\n");
printf("num position: %p num value: %d\n", p, num);
++(*p);
printf("\n---- ++(*p); -----\n");
printf("num position: %p num value: %d\n", p, num);
++*p;
printf("\n---- ++*p; -----\n");
printf("num position: %p num value: %d\n\n", p, num);
}
Выход:
num position: 0xbfce07b8 num value: 1
---- *p += 1; -----
num position: 0xbfce07b8 num value: 2
---- *p++; -----
num position: 0xbfce07bc num value: 2
---- (*p)++; -----
num position: 0xbfce07bd num value: 2
---- ++(*p); -----
num position: 0xbfce08bd num value: 2
---- ++*p; -----
num position: 0xbfce08bd num value: 2
я понял другое использование ++. Однако мой вопрос об адресах (я просто пишу 4 цифры)
Сначала адрес: 07b8
после 1-го прироста адрес является 07bc (увеличение на 4 (HEX))
после 2-го приращения адрес является 07bd (увеличивается на 1 (HEX))
после приращения 3-я адрес 08bd (увеличен на 100 (гекса))
Почему приращение адреса не является стабильным?
Не забудьте добавить return 0; в конце вашего основного. всегда используйте return 0, а также пытайтесь использовать int main(), а не просто main(), поскольку c99 строго проверяет типы возврата – niko