注册 登录
编程论坛 C语言论坛

如何用malloc函数为指针分配内存空间?

hffjhhh 发布于 2020-06-12 22:10, 1872 次点击
代码如下:
程序代码:
#include"stdio.h"
int main(void){
    char *a[50];
    return 0;
}

如何用malloc函数为指针a分配30个内存空间?为指针a[0]分配40个内存空间?
3 回复
#2
fulltimelink2020-06-12 23:37
char **a=(char **)malloc(30*sizeof(char *));
*(a+0)=(char *)malloc(40*sizeof(char));
#3
hffjhhh2020-06-13 01:51
以下是引用fulltimelink在2020-6-12 23:37:41的发言:

char **a=(char **)malloc(30*sizeof(char *));
*(a+0)=(char *)malloc(40*sizeof(char));

但如果将指针申明为char *a[50]的形式,就无法用malloc为指针a分配内存空间。
代码如下:
程序代码:
#include"stdio.h"
int main(void){
    char *q;
    q=(char *)malloc(sizeof(char)*30);
    char *a[50];
    a=(char **)malloc(30*sizeof(char *));
    a[0]=(char *)malloc(40*sizeof(char));
    char **b;
    b=(char **)malloc(30*sizeof(char *));
    *b=(char *)malloc(40*sizeof(char));
    return 0;
}

在上面代码运行时显示这行语句有问题:
a=(char **)malloc(30*sizeof(char *));


[此贴子已经被作者于2020-6-13 01:52编辑过]

#4
fulltimelink2020-06-13 06:36
指针数组不需要动态分配空间,指针数组也是一个数组,数组名是一个“常量”
1