source: doc/theses/mike_brooks_MMath/programs/bkgd-carray-mdim.c @ c141c09

Last change on this file since c141c09 was df699e0, checked in by Peter A. Buhr <pabuhr@…>, 6 months ago

program updates to match text

  • Property mode set to 100644
File size: 1.4 KB
RevLine 
[7972603]1#include <stdio.h>
2#include <assert.h>
3#include <stdlib.h>
4
5#define SHOW(x, fmt) printf( #x ": " fmt "\n", x )
6
7#ifdef ERRS
8#define ERR(...) __VA_ARGS__
9#else
10#define ERR(...)
11#endif
12
13
14
15int main() {
[df699e0]16        float ar[3][10];
17        static_assert(sizeof(float) == 4);                      $\C{// floats (atomic elements) are 4 bytes}$
18        static_assert(sizeof(void*) == 8);                      $\C{// pointers are 8 bytes}$
[5546f50b]19
[df699e0]20        static_assert(sizeof(ar) == 120);                       $\C{// the array, float[3][10]}$
21        static_assert(sizeof(ar[0]) == 40);                     $\C{// its first element, float[10]}$
22        static_assert(sizeof(ar[0][0]) == 4);           $\C{// its first grand element, float}$
[5546f50b]23
[df699e0]24        static_assert(sizeof(&(ar)) == 8);                      $\C{// pointer to the array, float(*)[3][10]}$
25        static_assert(sizeof(&(ar[0])) == 8);           $\C{// pointer to its first element, float(*)[10]}$
26        static_assert(sizeof(&(ar[0][0])) == 8);        $\C{// pointer to its first grand-element, float*}$
[5546f50b]27
[df699e0]28        float (*pa)[3][10] = &(ar);
29        float (*pa0)[10] = &(ar[0]);
30        float *pa00 = &(ar[0][0]);
[5546f50b]31
[df699e0]32        static_assert((void*)&ar == (void*)&(ar[0] ));
33        static_assert((void*)&ar == (void*)&(ar[0][0]));
[5546f50b]34
[df699e0]35        assert( (void *) pa == (void *) pa0 );
[5546f50b]36        assert( (void *) pa == (void *) pa00 );
37
38//      float (*b[3])[10];
39        float *b[3];
40        for (int i = 0; i < 3; i ++) {
41                b[i] = malloc(sizeof(float[10]));
42        }
[df699e0]43        ar[2][3];
[5546f50b]44        b[2][3];
[7972603]45/*
46
47*/
48
49}
[a885357]50
51// Local Variables: //
[df699e0]52// compile-command: "sed -f sedcmd bkgd-carray-mdim.c | gcc-11 -Wall -Wextra -x c -" //
[a885357]53// End: //
Note: See TracBrowser for help on using the repository browser.