cooper-union-ece-160/3-memory-and-pointers/part1.c

23 lines
641 B
C

#include <stdio.h>
#include <stdlib.h>
int main() {
char ar[10] = {20, 21, 22, 23, 24, 25, 26, 27, 28, 29};
char *ptr = &ar[3];
printf("%p\n", &ar[0]);
printf("%p\n", &ar[3]);
printf("%p\n", &ptr);
printf("%p\n", ptr);
printf("%i\n", ar[3]);
printf("%i\n", *ptr);
printf("sizeof(char) calculated with addresses: %li\n", ((void *)(&ar[3]) - (void *)(&ar[0])) / 3);
printf("sizeof(char) calculated with sizeof: %li\n", sizeof(char));
// Output of part a: "A47E04FE"
// Output of part b: "A47E0501"
// Difference between the 2 hex values is 3. Part b is 3 chars after so each char is 3 / 3 = 1 byte.
return 0;
}