Skip to content
EMPS intranet

Back to top
Hi!   Hi!           Start main()

Try stepping through the code


  Value and type of last evaluated expression: Address of array element: Address of array elementx:  (none)

Your browser does not support the canvas element which will make some the features unavailable.

If you are using Internet Explorer within the University of Exeter try going to the Settings menu (probably the gear shape at the top right of this page), selecting "Compatibility View settings", unchecking "Display intranet sites in Compatibility View" and reloading this page.

Code

 Header...
// Demonstrate a growable array # define GROWBY 4 // Growable array of floats typedef struct floatarray { float *values; int nvals; int buflen; }Floatarray; // Allocate a new growable array
Floatarray* newfloatarray(void){
  ...
» Floatarray *f; » f=xmalloc(sizeof *f);// NB xmalloc checks for NULL » f->buflen=f->nvals=0; » f->values=NULL; » return f;
} // Add a value to an array, extending it if necessary void addtoarray(Floatarray *f,float value){
  ...
// Check to see if we need to extend the array » if (f->nvals==f->buflen) { » f->buflen+=GROWBY; » f->values=realloc(f->values, f->buflen*sizeof f->values); } » f->values(f->nvals)=value; » f->nvals++;
} int main(){
  ...
» Floatarray *far; » float value; » far=newfloatarray(); » printf("Just keep typing in numbers!\n"); » while (scanf("%g", &value)==1) { » addtoarray(far, value); } » printf("The array has %d elements\n", far->nvals); » for ( int i=0;i<far->nvals; ++i) printf("%d: %g\n", i, far->values[i]); » return 0;
}
Memory

Allocated memory

128
129
130
131
132
133
134
135
128.values = 4046031726
128.nvals = -339600404
136
137
138
139
128.buflen = 6921641

8352
8353
8354
8355
8356
8357
8358
8359
8352[0] = 1.1
8352[1] = 2.2
8360
8361
8362
8363
8364
8365
8366
8367
8352[2] = 3.3
8352[3] = 4.4
8368
8369
8370
8371
8372
8373
8374
8375
8352[4] = 5.5
8352[5] = 6.6
8376
8377
8378
8379
8380
8381
8382
8383
8352[6] = 7.7
8352[7] = 8.8
8384
8385
8386
8387
8388
8389
8390
8391
8352[8] = 0
8352[9] = 1.65343e-40
8392
8393
8394
8395
8396
8397
8398
8399
8352[10] = 0
8352[11] = 0

8352
8353
8354
8355
8356
8357
8358
8359
8352[0] = 0
8352[1] = 0
8360
8361
8362
8363
8364
8365
8366
8367
8352[2] = 0
8352[3] = 0

8352
8353
8354
8355
8356
8357
8358
8359
8352[0] = 1.1
8352[1] = 2.2
8360
8361
8362
8363
8364
8365
8366
8367
8352[2] = 3.3
8352[3] = 4.4
8368
8369
8370
8371
8372
8373
8374
8375
8352[4] = 0
8352[5] = 1.65366e-40
8376
8377
8378
8379
8380
8381
8382
8383
8352[6] = 0
8352[7] = 0

newfloatarray()

8528
8529
8530
8531
f = -4156011685

addtoarray()

8552
8553
8554
8555
8556
8557
8558
8559
f = -4135185904
value = 8.80000019

addtoarray()

8552
8553
8554
8555
8556
8557
8558
8559
f = -4135185904
value = 9.89999962

addtoarray()

8552
8553
8554
8555
8556
8557
8558
8559
f = -4135185904
value = 6.5999999

addtoarray()

8552
8553
8554
8555
8556
8557
8558
8559
f = -4135185904
value = 1.10000002

addtoarray()

8552
8553
8554
8555
8556
8557
8558
8559
f = -4135185904
value = 7.69999981

addtoarray()

8552
8553
8554
8555
8556
8557
8558
8559
f = -4135185904
value = 5.5

addtoarray()

8552
8553
8554
8555
8556
8557
8558
8559
f = -4135185904
value = 4.4000001

addtoarray()

8552
8553
8554
8555
8556
8557
8558
8559
f = -4135185904
value = 2.20000005

addtoarray()

8552
8553
8554
8555
8556
8557
8558
8559
f = -4135185904
value = 3.29999995

main()

8584
8585
8586
8587
8588
8589
8590
8591
far = -140553601
value = -4.89186367e+33

main(): for()

8592
8593
8594
8595
i = 0

NB: the actual memory address of each variable is the
address shown plus 4290552008 (0xFFBCA0C8).

The actual address of allocated memory is the
address shown plus 155365976 (0x942B258).

Show Advanced options

.

Input was:

1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9

Show output (Before looking at the output, work out what you think it put should be and see if you are right.)

Output

Just keep typing in numbers!
The array has 9 elements
0: 1.1
1: 2.2
2: 3.3
3: 4.4
4: 5.5
5: 6.6
6: 7.7
7: 8.8
8: 9.9
                                                                                                                                                                                                                                                                       

Validate   Link-check © Copyright & disclaimer Share
Back to top