如何在c中为指向char的指针数组分配内存
Posted
技术标签:
【中文标题】如何在c中为指向char的指针数组分配内存【英文标题】:How to allocate memory for an array of pointers to a char in c 【发布时间】:2022-01-15 15:51:51 【问题描述】:我正在用 c 编写一个程序,但在为指向 char 的指针数组分配内存时遇到了困难,我以后需要对这个数组进行排序。数组应该在其中存储字符,然后我想按字母顺序对这些字符进行排序。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct
char collection[50];
data_col;
int main(int argc, char const *argv[])
data_col * array [10] = malloc(sizeof(data_col));
for (size_t i = 0; i < 10; i++)
scanf("%c", &array[i]->group);
return 0;
【问题讨论】:
您的代码有很多错误,无法猜测您想要实现的目标。请描述你想要什么。至少提供可以编译的代码。 -- 至少描述一下为什么需要指针数组。 编辑问题 @Alessa 为什么你决定需要一个指针数组而不是结构类型的对象数组? 如果要对它进行排序,那么使用指针数组是有意义的;您可以通过交换两个元素的指针而不是交换 50 个字节的数据来交换两个元素。 【参考方案1】:您可以通过简单地编写以下代码为您的 10 个指针分配内存:
data_col * array[10];
如果你把它放在你程序的最顶层,它是一个全局变量,你可以在你的程序中任何时候使用它,并且指针都为你初始化为空指针。
如果你把它放在一个函数中,那么当函数返回时,内存将被释放/释放。指针将以未初始化/未定义状态开始。
请注意,您仍然需要初始化这 10 个指针中的每一个,然后才能将它们用于任何事情。您可以选择使用malloc
为各个data_col
对象分配空间,或者您可以创建一个data_col
对象数组并让您的指针指向该数组。但是,您的问题与此无关;您的问题只是关于如何为 指针数组 分配内存,而我上面显示的代码成功地为您分配了该内存。
【讨论】:
以上是关于如何在c中为指向char的指针数组分配内存的主要内容,如果未能解决你的问题,请参考以下文章