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 | #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
#include "clog.h"
// This example illustrates "pass-by-address", a pattern in which you pass the address
// of a variable in the caller's (main(…)'s stack frame) so that the callee (make_5(…))
// can modify it. The norm is "pass-by-value" which copies the value to the callee's
// stack frame.
//
// This may be useful for smintf(…), especially for those doing the bonus. While not
// necessary, you may find it easiest to pass the address of a counter and have the
// callee increment it. This is all we will say about that. For the rest, you will
// need to use your problem-solving skills.
void make_5(int* a_n) {
*a_n = 5; // write 5 at address a_n
// <<<<<<<<<<<<<<<<<< memory form as of HERE <<<<<<<<<<<<<<<
}
int main(int argc, char* argv[]) {
int n = 2;
log_int(n); // n == 2
make_5(&n); // Pass by address
log_int(n); // n == 5
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.