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.