/* *pointers.c */ /* *Указатели */ #include int main() { int a[3] = {10,20,30}; int *p; p = a; printf("\ p = %p\n\ *p = %d\n\ a = %p\n\ *a = %d\n\n", p, *p, a, *a); printf("\ a[0] = %d\n\ a[1] = %d\n\ a[2] = %d\n\ p = %p\n\ a[0] = %d\n\ &a[0] = %p\n\ *p = %d\n\ &(*p) = %p\n\ a[0] = %d\n\ *(p+0) = %d\n\ *(p++) = %d\n\ *(++p) = %d\n\ *p++ = %d\n\ *p = %d\n", a[0], a[1], a[2], p=a, a[0], &a[0], *p, &(*p), a[0],\ *(p+0), *(p++), *(++p), *p++,*p); return 0; } g% clang-4.0 pointers.c pointers.c:39:43: warning: unsequenced modification and access to 'p' [-Wunsequenced] *p = %d\n", a[0], a[1], a[2], p=a, a[0], &a[0], *p, &(*p), a[0],\ ^ ~ 1 warning generated. g% ./a.out p = 0x7fffe583d708 *p = 10 a = 0x7fffe583d708 *a = 10 a[0] = 10 a[1] = 20 a[2] = 30 p = 0x7fffe583d708 a[0] = 10 &a[0] = 0x7fffe583d708 *p = 10 /*Верно*/ &(*p) = 0x7fffe583d708 a[0] = 10 *(p+0) = 10 /*Верно*/ *(p++) = 10 /*Верно*/ *(++p) = 30 /*Верно*/ *p++ = 30 /*Верно*/ *p = 538976265 /*"Мусор", верно*/ g% gcc -Wall -Wextra -Wformat pointers.c -o pointers -std=c11 pointers.c: In function ‘main’: pointers.c:40:39: warning: operation on ‘p’ may be undefined [-Wsequence-point] *(p+0), *(p++), *(++p), *p++,*p); ^ pointers.c:40:39: warning: operation on ‘p’ may be undefined [-Wsequence-point] pointers.c:40:39: warning: operation on ‘p’ may be undefined [-Wsequence-point] pointers.c:40:39: warning: operation on ‘p’ may be undefined [-Wsequence-point] pointers.c:40:39: warning: operation on ‘p’ may be undefined [-Wsequence-point] pointers.c:40:39: warning: operation on ‘p’ may be undefined [-Wsequence-point] pointers.c:40:39: warning: operation on ‘p’ may be undefined [-Wsequence-point] g% ./pointers p = 0x7ffd1ef87d40 *p = 10 a = 0x7ffd1ef87d40 *a = 10 a[0] = 10 a[1] = 20 a[2] = 30 p = 0x7ffd1ef87d40 a[0] = 10 &a[0] = 0x7ffd1ef87d40 *p = 0 /*Не верно*/ &(*p) = 0x7ffd1ef87d40 a[0] = 10 *(p+0) = 0 /*Не верно*/ *(p++) = 30 /*Не верно*/ *(++p) = 30 /*С учетом предыдущего шага - не верно*/ *p++ = 10 /*С учетом предыдущего шага - не верно*/ *p = 10 /*С учетом предыдущего шага - не верно*/