- /* fill an array, allocated dinamically without malloc, 
- ** with 1, 2, 3, 4, ... 
- ** then sum all of the values and print the result */ 
- #include <stdio.h> 
-   
- void vlaalloc(size_t nmemb, size_t siz, void (*fx) (void *, size_t)) { 
-   unsigned char data[nmemb * siz]; 
-   
-   fx(data, nmemb); 
- } 
-   
- int arraysum(int *arr, size_t len) { 
-   int val = 0; 
-   for (size_t i = 0; i < len; i++) val += arr[i]; 
-   return val; 
- } 
-   
- void seq(void *data, size_t len) { 
-   int *arr = data; 
-   for (size_t i = 0; i < len; i++) arr[i] = i + 1; 
-   printf("array sum is %d\n",-  arraysum (- arr ,-  len ));
 
- } 
-   
- int main(void) { 
-   int n; 
-   
-   if (scanf("%d", &- n ) == 1) {
 
-     vlaalloc(n, sizeof (int), seq); 
-   } 
- } 
				LyogZmlsbCBhbiBhcnJheSwgYWxsb2NhdGVkIGRpbmFtaWNhbGx5IHdpdGhvdXQgbWFsbG9jLAoqKiB3aXRoIDEsIDIsIDMsIDQsIC4uLgoqKiB0aGVuIHN1bSBhbGwgb2YgdGhlIHZhbHVlcyBhbmQgcHJpbnQgdGhlIHJlc3VsdCAqLwojaW5jbHVkZSA8c3RkaW8uaD4KCnZvaWQgdmxhYWxsb2Moc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6LCB2b2lkICgqZngpICh2b2lkICosIHNpemVfdCkpIHsKICB1bnNpZ25lZCBjaGFyIGRhdGFbbm1lbWIgKiBzaXpdOwoKICBmeChkYXRhLCBubWVtYik7Cn0KCmludCBhcnJheXN1bShpbnQgKmFyciwgc2l6ZV90IGxlbikgewogIGludCB2YWwgPSAwOwogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuOyBpKyspIHZhbCArPSBhcnJbaV07CiAgcmV0dXJuIHZhbDsKfQoKdm9pZCBzZXEodm9pZCAqZGF0YSwgc2l6ZV90IGxlbikgewogIGludCAqYXJyID0gZGF0YTsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcnJbaV0gPSBpICsgMTsKICBwcmludGYoImFycmF5IHN1bSBpcyAlZFxuIiwgYXJyYXlzdW0oYXJyLCBsZW4pKTsKfQoKaW50IG1haW4odm9pZCkgewogIGludCBuOwoKICBpZiAoc2NhbmYoIiVkIiwgJm4pID09IDEpIHsKICAgIHZsYWFsbG9jKG4sIHNpemVvZiAoaW50KSwgc2VxKTsKICB9Cn0=