1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
#define log_int(n) printf("%15s == %d\n", (#n), n)
#define log_addr(n) printf("%15s == %p\n", (#n), (void*)n)
int main(int argc, char* argv[]) {
int array[] = {10, 11, 12, 13, 10};
log_int(array[0]);
log_int(array[4]);
//int* a_array0 = &(array[0]);
int* a_array0 = array;
log_int(array[0]);
log_int(*array);
log_int(a_array0[0]);
log_int(*a_array0);
log_addr((a_array0+4));
log_addr(&(array[4]));
log_int(*(a_array0+4));i
// array[i] <=> *(array + i)
int* a_array4 = &array[4];
log_int(a_array4 - a_array0);
// Q: why is this ^ 4 instead of 16?
// A: C autoamtically multiplies additions/subtraction
// by the size of the data stored at the address
if (a_array0 == a_array4) {
printf("Same address\n");
} else {
printf("Not same address\n");
}
if (*a_array0 == *a_array4) {
printf("Same value\n");
} else {
printf("Not same value\n");
}
int array2[] = {10, 11, 12, 13, 10};
if (array == array2) {
printf("Same address\n");
} else {
printf("Not same address\n");
}
return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */
|
© Copyright 2022 Alexander J. Quinn This content is protected and may not be shared, uploaded, or distributed.