Add some theory for pointers
This commit is contained in:
parent
69ca802606
commit
907c7662a7
3 changed files with 72 additions and 0 deletions
38
c_modern_approach/Pointers/combining_operatnds.c
Normal file
38
c_modern_approach/Pointers/combining_operatnds.c
Normal 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);
|
||||
}
|
18
c_modern_approach/Pointers/pointers_operands_usage.c
Normal file
18
c_modern_approach/Pointers/pointers_operands_usage.c
Normal 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);
|
||||
}
|
16
c_modern_approach/Pointers/reverse.c
Normal file
16
c_modern_approach/Pointers/reverse.c
Normal 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;
|
||||
}
|
Loading…
Reference in a new issue