Add some theory for pointers

This commit is contained in:
pro100ton 2024-12-15 23:05:34 +03:00
parent 69ca802606
commit 907c7662a7
3 changed files with 72 additions and 0 deletions

View file

@ -0,0 +1,38 @@
#include <stdio.h>
#define ARRAY_SIZE 10
void print_array(int a[], int array_size) {
printf("[");
int *p;
for (p = a; p < a + array_size; p++) {
if (p == &a[array_size - 1]) {
printf("%d", *p);
} else {
printf("%d, ", *p);
}
}
printf("]\n");
}
int main() {
int a[ARRAY_SIZE] = {1, 2, 3, 4, 5, 6, 7, 80, 90, 100};
print_array(a, ARRAY_SIZE);
printf("*a:\t%d\n", *a);
int *ap1 = &a[1];
*ap1++ = 99;
printf("Executing *ap1++:\n");
print_array(a, ARRAY_SIZE);
printf("*ap1 after execution:\n");
printf("%d\n", *ap1);
int *ap2 = &a[2];
*(ap2)++ = 88;
printf("Executing *(ap2)++:\n");
print_array(a, ARRAY_SIZE);
printf("*ap2 after execution:\n");
printf("%d\n", *ap2);
int *ap3 = &a[3];
*++ap3 = 77;
printf("Executing *++ap3:\n");
print_array(a, ARRAY_SIZE);
printf("*ap3 after execution:\n");
printf("%d\n", *ap3);
}

View file

@ -0,0 +1,18 @@
#include <stdio.h>
int main() {
int a, *ap;
a = 123;
ap = &a;
int b = 10;
printf("a:\t%d\n", a);
printf("&a:\t%p\n", &a);
printf("ap:\t%p\n", ap);
printf("*ap:\t%d\n", *ap);
printf("&ap:\t%p\n", &ap);
printf("*&ap:\t%p\n", *&ap);
printf("**&ap:\t%d\n", **&ap);
printf("------\n");
printf("b:\t%d\n", b);
printf("&b:\t%p\n", &b);
printf("*&b:\t%d\n", *&b);
}

View file

@ -0,0 +1,16 @@
#include <stdio.h>
#define N 10
int main() {
int a[N], *p;
printf("Enter %d numbers: ", N);
for (p = a; p < a + N; p++) {
scanf("%d", p);
}
printf("In reverse order:");
for (p = a + N - 1; p >= a; p--) {
printf(" %d", *p);
}
printf("\n");
return 0;
}