fork(1) download
  1. /* fill an array, allocated dinamically without malloc,
  2. ** with 1, 2, 3, 4, ...
  3. ** then sum all of the values and print the result */
  4. #include <stdio.h>
  5.  
  6. void vlaalloc(size_t nmemb, size_t siz, void (*fx) (void *, size_t)) {
  7. unsigned char data[nmemb * siz];
  8.  
  9. fx(data, nmemb);
  10. }
  11.  
  12. int arraysum(int *arr, size_t len) {
  13. int val = 0;
  14. for (size_t i = 0; i < len; i++) val += arr[i];
  15. return val;
  16. }
  17.  
  18. void seq(void *data, size_t len) {
  19. int *arr = data;
  20. for (size_t i = 0; i < len; i++) arr[i] = i + 1;
  21. printf("array sum is %d\n", arraysum(arr, len));
  22. }
  23.  
  24. int main(void) {
  25. int n;
  26.  
  27. if (scanf("%d", &n) == 1) {
  28. vlaalloc(n, sizeof (int), seq);
  29. }
  30. }
Success #stdin #stdout 0.01s 1724KB
stdin
14
stdout
array sum is 105