admin 管理员组

文章数量: 1184232


2024年4月21日发(作者:c foreach和while)

C 二维数组动态分配和释放

(1)已知第二维

Code-1

char (*a)[N];//指向数组的指针

a = (char (*)[N])malloc(sizeof(char *) * m);

printf("%dn", sizeof(a));//4,指针

printf("%dn", sizeof(a[0]));//N,一维数组

free(a);

(2)已知第一维

Code-2

char* a[M];//指针的数组

int i;

for(i=0; i

a[i] = (char *)malloc(sizeof(char) * n);

printf("%dn", sizeof(a));//4*M,指针数组

printf("%dn", sizeof(a[0]));//4,指针

for(i=0; i

free(a[i]);

(3)已知第一维,一次分配内存(保证内存的连续性)

Code-3

char* a[M];//指针的数组

int i;

a[0] = (char *)malloc(sizeof(char) * M * n);

for(i=1; i

a[i] = a[i-1] + n;

printf("%dn", sizeof(a));//4*M,指针数组


本文标签: 数组 指针 内存 保证 分配内存