在(重新)學習C的階段中,我經常遇到數組和結構(和指針)的問題。這是我寫的一個小測試。C:結構和數組 - 概述和幫助需要
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char name[10];
} man;
int main (int argc, const char * argv[]) {
int i;
man john;
strcpy(john.name, "john");
// array of structures
man men[10];
strcpy(men[3].name, "john");
printf("*** %s ***\n", men[3].name);
// dynamic array of structures
man *men2;
men2 = malloc(10 * sizeof(man));
strcpy(men2[3].name, "john");
printf("*** %s ***\n", men2[3].name);
// multidimensional array of structures
man men3[10][10];
strcpy(men3[3][3].name, "john");
printf("*** %s ***\n", men3[3][3].name);
// dynamic multidimensional array of structures
man **men4;
men4 = malloc(10 * sizeof(man*));
for (i = 0; i < 10; i++)
men4[i] = malloc(10 * sizeof(man*));
strcpy(men4[3][3].name, "john");
printf("*** %s ***\n", men4[3][3].name);
// array of pointer to structure
man *men5[10];
men5[3] = &john;
printf("*** %s ***\n", men5[3]->name);
// dynamic array of pointers to structure
man **men6;
men6 = malloc(10 * sizeof(*men6));
men6[3] = &john;
printf("*** %s ***\n", men6[3]->name);
// dynamic multidimensional array of pointers to structures
/* ? */
return 0;
}
,您可以:
- 告訴我,如果一切是正確的
- 解釋爲什麼men4我使用
sizeof(man*)
但men6它是sizeof(*men6)
(星號位置) - 解釋如何使指向結構的動態多維數組(最後一點)
- 解釋我men4?它可以工作,但在我看來,更多的是指向結構的指針數組,而不是多維的結構數組!
在此先感謝。