source: CIVL/examples/languageFeatures/pointerAdd.cvl@ 08299ed

1.23 2.0 main test-branch
Last change on this file since 08299ed was 3ff27cf, checked in by Manchun Zheng <zmanchun@…>, 11 years ago

updated examples since $assert/$assume has been changed to functions; fixed the model builder for the new side-effect remover.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@2085 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 1.5 KB
RevLine 
[e6b02c8]1#include <civlc.cvh>
[3dee1c0]2#include <stdio.h>
3
[d010d61]4$input double a1d[10];
5$input double a2d[10][10];
6$input double a3d[10][10][10];
7$input double a4d[5][10][15][20];
[3dee1c0]8void main(){
9 double * p1d;
10 double ** p2d;
[d010d61]11 double *** p3d;
12
[3dee1c0]13
14 p1d = (double *)$malloc($root, sizeof(double) * 10);
15 p2d = (double **)$malloc($root, sizeof(double *) * 10);
[d010d61]16 p3d = (double ***)$malloc($root, sizeof(double **) * 10);
[3dee1c0]17 for(int i=0; i<10; i++){
[d010d61]18 p1d[i] = i;
[3dee1c0]19 p2d[i] = (double *)$malloc($root, sizeof(double) * 10);
[d010d61]20 p3d[i] = (double **)$malloc($root, sizeof(double *) * 10);
[3dee1c0]21 for(int j=0; j<10; j++){
22 p2d[i][j] = i * 10 + j;
[d010d61]23 p3d[i][j] = (double *)$malloc($root, sizeof(double) * 10);
24 for(int k=0; k<10; k++){
25 p3d[i][j][k] = i * 100 + j * 10 + k;
26 }
[3dee1c0]27 }
28 }
29
30 /* access array */
[3ff27cf]31 $assert((*(a1d+5) == a1d[5]));
32 $assert((*(*(a2d + 5) + 5) == a2d[5][5]));
33 $assert((**(a2d + 5) == a2d[5][0]));
34 $assert((*(a2d[0] + 9) == a2d[0][9]));
35 $assert((*(&a2d[0][0] + 9) == a2d[0][9]));
36 $assert((*(&a3d[1][2][3] - 40) == a3d[0][8][3]));
37 $assert((*(&a3d[1][2][3] + 145) == a3d[2][6][8]));
38 $assert((*(&a4d[1][2][3][4] + 145) == a4d[1][2][10][9]));
[3dee1c0]39
40 /* access malloced pointer */
[3ff27cf]41 $assert((*(p1d + 5) == p1d[5]));
42 $assert((*(*(p2d + 5) + 5) == p2d[5][5]));
43 $assert((*(*(p2d + 9)) == p2d[9][0]));
44 $assert((*(&p3d[0][0][0] + 8) == p3d[0][0][8]));
[aaacc2b]45
[d010d61]46 $free(p1d);
[aaacc2b]47 for(int i = 0; i<10; i++){
[8943fea]48 $free(p2d[i]);
[aaacc2b]49 for(int j = 0; j<10; j++){
50 $free(p3d[i][j]);
51 }
52 $free(p3d[i]);
53 }
54 $free(p2d);
55 $free(p3d);
[3dee1c0]56}
Note: See TracBrowser for help on using the repository browser.