指针数组的内存分配

fud*_*din 4 c

我需要为需要用作2d数组的指针分配内存.我知道如何为char指针和int指针分配内存我很困惑如何分配指针数组的内存.原因的图形表示非常有帮助,下面的代码也很好吗?

char *names[5];
for(i=0;i<5;i++)
{
 names[i]=(*char)malloc(sizeof(char));
}
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 11

不,这不是因为您正在分配数组,假设维度只有1个基本类型char元素(即1个字节).

我假设您想要分配5个指向内部字符串的指针names,但只是指针.

您应该根据指针的大小乘以元素的数量来分配它:

char **names = malloc(sizeof(char*)*5);
Run Code Online (Sandbox Code Playgroud)

您不需要使用循环逐个分配它们.请注意,您需要使用指定它是一个指针指针**

  • 不要从`malloc()`转换返回值.http://c-faq.com/malloc/mallocnocast.html (4认同)