#include #include void **array2d(size_t width, size_t height, size_t size) { return malloc(width * height * size); } int main(void) { int i, j; int **array; array = (int **)array2d(10, 10, sizeof(**array)); if (!array) return 1; for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) array[i][j] = i * j; return 0; } /******************************************************/ struct mystruct { void *p; /* 64 bit */ long l; /* 64 bit */ double d; /* not sure 32 or 64, doesn't matter */ int i; /* 32 bit */ char c; /* 8 bit */ /* padding, either 58 bits or 24 bit depending on the double */ }; /******************************************************/ struct tree_node { struct tree_node *left; struct tree_node *right; int key; int value; }; struct tree_node *head = NULL; void add(struct tree_node **pos, struct tree_node *new_node) { if (!*pos) { *pos = new_node; return; } if (new_node->key < (*pos)->key) add(&((*pos)->left), new_node); else add(&((*pos)->right), new_node); } struct tree_node *find(struct tree_node *pos, int key) { if (!pos) return NULL; if (pos->key < key) return find(pos->left, key); else if (pos->key > key) return find(pos->right, key); else return pos; } int main(void) { struct tree_node *new_node, *node; new_node = malloc(sizeof(*new_node)); if (!new_node) return 1; new_node->key = 10; new_node->value = 11111; add(&head, new_node); node = find(head, 10); if (!node) return 1; printf("found value = %d\n", node->value); return 0; }