View difference between Paste ID: BEgDNAhu and JTjQMfxr
SHOW: | | - or go back to the newest paste.
1
#include <assert.h>
2
#include <stdlib.h>
3
#include <time.h>
4-
int (* array_foo(void))[5][5][5] {
4+
5-
    int(* arr)[5][5][5] = malloc(sizeof(int)*5*5*5);
5+
void * array_foo(int len1, int len2, int len3) {
6
    int(* arr)[len1][len2][len3] = malloc(sizeof(int)* len1 * len2 * len3);
7-
    for (i = 0; i < 5; i++) {
7+
8-
        for (j = 0; j < 5; j++) {
8+
    for (i = 0; i < len1; i++) {
9-
            for (k = 0; k < 5; k++) {
9+
        for (j = 0; j < len2; j++) {
10
            for (k = 0; k < len3; k++) {
11
                (*arr)[i][j][k] = i*j*k;
12
            }
13
        }
14
    }
15
    return arr;
16
}
17-
    int (*arr)[5][5][5] = array_foo();
17+
18
    srand(time(NULL));
19
    int len1 = rand() % 500;
20-
    for (i = 0; i < 5; i++) {
20+
    int len2 = rand() % 500;
21-
        for (j = 0; j < 5; j++) {
21+
    int len3 = rand() % 500;
22-
            for (k = 0; k < 5; k++) {
22+
    int (*arr)[len1][len2][len3] = array_foo(len1, len2, len3);
23
24
    int i, j, k;
25
    for (i = 0; i < len1; i++) {
26
        for (j = 0; j < len2; j++) {
27
            for (k = 0; k < len3; k++) {
28
                assert((*arr)[i][j][k] == i*j*k);
29
            }
30
        }
31
    }
32
    free(arr);
33
    return 0;
34
}