在C语言程序中,指针数组可以用malloc函数生成吗?

2024-11-25 07:18:21
推荐回答(3个)
回答1:

可以的,任何存储空间,均可以通过malloc函数生成。指针数组也不例外。
以下是一个生成10个char*型的指针数组的代码,要存储char*型的数组,其数组名,即指针类型,必须为char**型。
char ** p;
p = (char **) malloc(sizeof(char *) * 10);

这里需要注意两个地方:
1 指针的强制转换。
malloc的返回值为void*型,所以在赋值给char**型时,要强制转换为目标类型。部分编译器对此检查不严格,但为了可移植性,还是加上强制转换为好。
2 malloc参数的确定。
malloc参数值为申请内存空间的大小,每个char *型的空间为sizeof(char *), 10个空间就再乘10。

一般来说,无论是何种类型TYPE,在申请时均可以写作
TYPE * p = (TYPE*)malloc(sizeof(TYPE) * N);
这样的形式。

回答2:

可以用malloc分配一块空间,存储很多指针,也可以简单理解为一个存储指针数组
int **p = (int**)malloc(sizeof(int*) * n);
p[0] ~ p[n-1]就是存储int*的数组。

回答3:

null