Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Create your online store today with Shopify

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Disclosure: My content contains affiliate links.

43,234 questions

56,136 answers

573 users

How to dynamically allocate and set values to a 3d array in C

2 Answers

0 votes
#include <stdio.h>
#include <stdlib.h>

int main() {
    int x = 3, y = 4, z = 5; // Dimensions of the 3D array

    // Allocate memory for the 3D array
    int ***array = (int ***)malloc(x * sizeof(int **));
    for (int i = 0; i < x; i++) {
        array[i] = (int **)malloc(y * sizeof(int *));
        for (int j = 0; j < y; j++) {
            array[i][j] = (int *)malloc(z * sizeof(int));
        }
    }

    // Setting values in the 3D array
    for (int i = 0; i < x; i++) {
        for (int j = 0; j < y; j++) {
            for (int k = 0; k < z; k++) {
                array[i][j][k] = i + j + k; // Just an example value
            }
        }
    }

    // Printing values from the 3D array
    for (int i = 0; i < x; i++) {
        for (int j = 0; j < y; j++) {
            for (int k = 0; k < z; k++) {
                printf("array[%d][%d][%d] = %2d ", i, j, k, array[i][j][k]);
            }
            printf("\n");
        }
    }

    // Free the allocated memory
    for (int i = 0; i < x; i++) {
        for (int j = 0; j < y; j++) {
            free(array[i][j]);
        }
        free(array[i]);
    }
    free(array);

    return 0;
}




/*
run:

array[0][0][0] =  0 array[0][0][1] =  1 array[0][0][2] =  2 array[0][0][3] =  3 array[0][0][4] =  4 
array[0][1][0] =  1 array[0][1][1] =  2 array[0][1][2] =  3 array[0][1][3] =  4 array[0][1][4] =  5 
array[0][2][0] =  2 array[0][2][1] =  3 array[0][2][2] =  4 array[0][2][3] =  5 array[0][2][4] =  6 
array[0][3][0] =  3 array[0][3][1] =  4 array[0][3][2] =  5 array[0][3][3] =  6 array[0][3][4] =  7 
array[1][0][0] =  1 array[1][0][1] =  2 array[1][0][2] =  3 array[1][0][3] =  4 array[1][0][4] =  5 
array[1][1][0] =  2 array[1][1][1] =  3 array[1][1][2] =  4 array[1][1][3] =  5 array[1][1][4] =  6 
array[1][2][0] =  3 array[1][2][1] =  4 array[1][2][2] =  5 array[1][2][3] =  6 array[1][2][4] =  7 
array[1][3][0] =  4 array[1][3][1] =  5 array[1][3][2] =  6 array[1][3][3] =  7 array[1][3][4] =  8 
array[2][0][0] =  2 array[2][0][1] =  3 array[2][0][2] =  4 array[2][0][3] =  5 array[2][0][4] =  6 
array[2][1][0] =  3 array[2][1][1] =  4 array[2][1][2] =  5 array[2][1][3] =  6 array[2][1][4] =  7 
array[2][2][0] =  4 array[2][2][1] =  5 array[2][2][2] =  6 array[2][2][3] =  7 array[2][2][4] =  8 
array[2][3][0] =  5 array[2][3][1] =  6 array[2][3][2] =  7 array[2][3][3] =  8 array[2][3][4] =  9 

*/

 



answered Apr 21, 2025 by avibootz
edited Apr 21, 2025 by avibootz
0 votes
#include <stdio.h>
#include <stdlib.h>

// Function to allocate memory for a 3D array
int ***allocate_3d_array(int x, int y, int z) {
    int ***array = (int ***)malloc(x * sizeof(int **));
    for (int i = 0; i < x; i++) {
        array[i] = (int **)malloc(y * sizeof(int *));
        for (int j = 0; j < y; j++) {
            array[i][j] = (int *)malloc(z * sizeof(int));
        }
    }
    return array;
}

// Function to initialize a 3D array
void initialize_3d_array(int ***array, int x, int y, int z) {
    for (int i = 0; i < x; i++) {
        for (int j = 0; j < y; j++) {
            for (int k = 0; k < z; k++) {
                array[i][j][k] = i + j + k;
            }
        }
    }
}

// Function to print a 3D array
void print_3d_array(int ***array, int x, int y, int z) {
    for (int i = 0; i < x; i++) {
        for (int j = 0; j < y; j++) {
            for (int k = 0; k < z; k++) {
                printf("array[%d][%d][%d] = %2d ", i, j, k, array[i][j][k]);
            }
            printf("\n");
        }
    }
}

// Function to free allocated memory
void free_3d_array(int ***array, int x, int y) {
    for (int i = 0; i < x; i++) {
        for (int j = 0; j < y; j++) {
            free(array[i][j]);
        }
        free(array[i]);
    }
    free(array);
}

int main() {
    int x = 3, y = 4, z = 5; // Dimensions of the 3D array

    // Allocate memory
    int ***array = allocate_3d_array(x, y, z);

    // Initialize array
    initialize_3d_array(array, x, y, z);

    // Print array
    print_3d_array(array, x, y, z);

    // Free memory
    free_3d_array(array, x, y);

    return 0;
}




/*
run:

array[0][0][0] =  0 array[0][0][1] =  1 array[0][0][2] =  2 array[0][0][3] =  3 array[0][0][4] =  4 
array[0][1][0] =  1 array[0][1][1] =  2 array[0][1][2] =  3 array[0][1][3] =  4 array[0][1][4] =  5 
array[0][2][0] =  2 array[0][2][1] =  3 array[0][2][2] =  4 array[0][2][3] =  5 array[0][2][4] =  6 
array[0][3][0] =  3 array[0][3][1] =  4 array[0][3][2] =  5 array[0][3][3] =  6 array[0][3][4] =  7 
array[1][0][0] =  1 array[1][0][1] =  2 array[1][0][2] =  3 array[1][0][3] =  4 array[1][0][4] =  5 
array[1][1][0] =  2 array[1][1][1] =  3 array[1][1][2] =  4 array[1][1][3] =  5 array[1][1][4] =  6 
array[1][2][0] =  3 array[1][2][1] =  4 array[1][2][2] =  5 array[1][2][3] =  6 array[1][2][4] =  7 
array[1][3][0] =  4 array[1][3][1] =  5 array[1][3][2] =  6 array[1][3][3] =  7 array[1][3][4] =  8 
array[2][0][0] =  2 array[2][0][1] =  3 array[2][0][2] =  4 array[2][0][3] =  5 array[2][0][4] =  6 
array[2][1][0] =  3 array[2][1][1] =  4 array[2][1][2] =  5 array[2][1][3] =  6 array[2][1][4] =  7 
array[2][2][0] =  4 array[2][2][1] =  5 array[2][2][2] =  6 array[2][2][3] =  7 array[2][2][4] =  8 
array[2][3][0] =  5 array[2][3][1] =  6 array[2][3][2] =  7 array[2][3][3] =  8 array[2][3][4] =  9 

*/

 



answered Apr 21, 2025 by avibootz

Related questions

2 answers 488 views
1 answer 143 views
1 answer 292 views
292 views asked May 19, 2025 by avibootz
1 answer 231 views
2 answers 314 views
1 answer 139 views
...