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 50 51 52 53 54 55 56 | #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
#define log_int(n) printf("%s == %d\n", #n, (n))
#define log_long(n) printf("%s == %ld\n", #n, (n))
#define log_addr(n) printf("%s == %p\n", #n, (void*)(n))
int main(int argc, char* argv[]) {
// type of numbers is int[5]
int numbers[] = {10, 11, 12, 13, 18};
log_long(sizeof(numbers));
//int* a_numbers0 = numbers;
//type of a_numbers0 is int*
int* a_numbers0 = &(numbers[0]);
log_long(sizeof(a_numbers0));
log_addr(numbers);
log_addr(a_numbers0);
int* a_numbers2 = &(numbers[2]);
log_addr(a_numbers2);
log_addr(numbers + 2);
log_int(numbers[2]);
log_int(*a_numbers2);
log_int(*(numbers + 2));
log_int(a_numbers2[0]);
// addr[i] === *(addr + i)
// addr[0] === *addr
log_long(a_numbers2 - a_numbers0);
int numbers2[] = {10, 11, 12, 13, 18};
log_addr(numbers2);
// this is not comparing values in the array
// this is comparing the array addresses
if (numbers == numbers2) {
printf("Array addresses are equal\n");
} else {
printf("Array addresses are not equal\n");
}
// we can compare values by dereferencing
// would want a loop to compare all values
if (*numbers == *numbers2) {
printf("Array first values are equal\n");
} else {
printf("Array first values are not equal\n");
}
return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */
|
© Copyright 2024 Alexander J. Quinn & David Burnett This content is protected and may not be shared, uploaded, or distributed.