Appel Flap
Appel Flap

Reputation: 271

C Array Initializer With Different Sizes?

I'm trying to make a multidimensional array, which contains lots of data.

However, I don't know the initializer size of the middle array since this is always different for each array level.

It looks like this:

 char* spawnableVehicles[3][][3] = {
      {
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
      },
      {
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
      },
      {
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
      },
 }

How do I initialize the size of the middle array?

Upvotes: 0

Views: 47

Answers (1)

Mostafa Ayaz
Mostafa Ayaz

Reputation: 478

You need to identify all the indices clearly. The definition as spawnableVehicles[3][][3] yields to error while when I defined spawnableVehicles[30][30][30] the error vanished. I also wrote a code to check this out:

#include<iostream>
using namespace std;
int main(){
    char* spawnableVehicles[30][30][30] = {
      {
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
      },
      {
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
      },
      {
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
           {"test1", "test2", "test3"},
      },
 };
 for (int i=0;i<30;i++){
    for (int j=0;j<30;j++){
        for (int k=0;k<30;k++){
            if (spawnableVehicles[i][j][k]!=NULL){
                // printing spawnableVehicles[i][j][k] when it has a value other than NULL
                cout<<i<<"   "<<j<<"   "<<k<<"   "<<spawnableVehicles[i][j][k]<<"\n";
            }
        }
    }
 }
 return 0;
}

with the following result:

0   0   0   test1
0   0   1   test2
0   0   2   test3
0   1   0   test1
0   1   1   test2
0   1   2   test3
0   2   0   test1
0   2   1   test2
0   2   2   test3
0   3   0   test1
0   3   1   test2
0   3   2   test3
0   4   0   test1
0   4   1   test2
0   4   2   test3
1   0   0   test1
1   0   1   test2
1   0   2   test3
1   1   0   test1
1   1   1   test2
1   1   2   test3
1   2   0   test1
1   2   1   test2
1   2   2   test3
2   0   0   test1
2   0   1   test2
2   0   2   test3
2   1   0   test1
2   1   1   test2
2   1   2   test3
2   2   0   test1
2   2   1   test2
2   2   2   test3
2   3   0   test1
2   3   1   test2
2   3   2   test3
2   4   0   test1
2   4   1   test2
2   4   2   test3
2   5   0   test1
2   5   1   test2
2   5   2   test3
2   6   0   test1
2   6   1   test2
2   6   2   test3
2   7   0   test1
2   7   1   test2
2   7   2   test3

--------------------------------
Process exited after 0.08576 seconds with return value 0
Press any key to continue . . .

Upvotes: 2

Related Questions