github.com/Konstantin8105/c4go@v0.0.0-20240505174241-768bb1c65a51/tests/code_quality/ap.c (about)

     1  #include <stdio.h>
     2  
     3  // input argument - C-pointer
     4  void a(int* v1) { printf("a: %d\n", *v1); }
     5  
     6  // input argument - C-array
     7  void b(int v1[], int size)
     8  {
     9      for (size--; size >= 0; size--) {
    10          printf("b: %d %d\n", size, v1[size]);
    11      }
    12  }
    13  
    14  long get()
    15  {
    16      return (long)(0);
    17  }
    18  
    19  int main()
    20  {
    21      // value
    22      int i1 = 42;
    23      a(&i1);
    24      b(&i1, 1);
    25  
    26      // C-array
    27      int i2[] = { 11, 22 };
    28      a(i2);
    29      b(i2, 2);
    30  
    31      // C-pointer from value
    32      int* i3 = &i1;
    33      a(i3);
    34      b(i3, 1);
    35  
    36      // C-pointer from array
    37      int* i4 = i2;
    38      a(i4);
    39      b(i4, 2);
    40  
    41      // C-pointer from array
    42      int* i5 = i2[1];
    43      a(i5);
    44      b(i5, 1);
    45  
    46      // pointer arithmetic
    47      int* i6 = i5 + 1;
    48      a(i6);
    49      b(i6, 1);
    50  
    51      // pointer arithmetic
    52      int val = 2 - 2;
    53      int* i7 = 1 + (1 - 1) + val + 0 * (100 - 2) + i5 + 0 - 0 * 0;
    54      a(i7);
    55      b(i7, 1);
    56  
    57      // pointer arithmetic
    58      int* i8 = i5 + 1 + 0;
    59      a(i8);
    60      b(i8, 1);
    61  
    62      // pointer arithmetic
    63      int i9[] = { *i3, *(i3 + 1) };
    64      a(i9);
    65      b(i9, 1);
    66  
    67      // pointer arithmetic
    68      int* i10 = 1 + 0 + i5 + 5 * get() + get() + (12 + 3) * get();
    69      a(i10);
    70      b(i10, 1);
    71  
    72      // pointer arithmetic
    73      int* i11 = 1 + 0 + i5 + 5 * get() + get() - (12 + 3) * get();
    74      a(i11);
    75      b(i11, 1);
    76  
    77      return 0;
    78  }