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 | #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
int main(int argc, char* argv[]) {
int n = 5;
int* a_n = &n;
// *a_n = 7;
//
// What would happen if we didn't use the *?
// a_n = 7; // BAD!!!
/*
d.c:13:6: warning: assignment to ‘int *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
a_n = 7; // BAD!!!
^
*/
//
a_n = (int*) 7; // TERRIBLE!!!
printf("%p\n", (void*) a_n);
printf("%d\n", *a_n); // print the value at a_n
// ∙ Do not try to solve the assignment to ‘▒*’ from ‘▒’ with a typecast.
// ∙ Do not use typecasts... PERIOD... unless:
// 1) It is absolutely necessary.
// 2) It is absolutely safe.
// 3) You know---and can articulate---why (for #2 and #3).
return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */
|
© Copyright 2021 Alexander J. Quinn This content is protected and may not be shared, uploaded, or distributed.