diff --git a/c_modern_approach/Pointers/combining_operatnds.c b/c_modern_approach/Pointers/combining_operatnds.c new file mode 100644 index 0000000..afc2142 --- /dev/null +++ b/c_modern_approach/Pointers/combining_operatnds.c @@ -0,0 +1,38 @@ +#include +#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); +} diff --git a/c_modern_approach/Pointers/pointers_operands_usage.c b/c_modern_approach/Pointers/pointers_operands_usage.c new file mode 100644 index 0000000..f4e7601 --- /dev/null +++ b/c_modern_approach/Pointers/pointers_operands_usage.c @@ -0,0 +1,18 @@ +#include +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); +} diff --git a/c_modern_approach/Pointers/reverse.c b/c_modern_approach/Pointers/reverse.c new file mode 100644 index 0000000..b3d97ac --- /dev/null +++ b/c_modern_approach/Pointers/reverse.c @@ -0,0 +1,16 @@ +#include +#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; +}