用于2D阵列的malloc

时间:2015-05-05 22:44:32

标签: c arrays malloc

我已经声明了一个全局数组char *people[][2]。这个数组的目的是以以下形式保存人们的名字和姓氏。

people[0][0]          = "John"           people[0][1]          = "Smith"
people[1][0]          = "Frank"          people[1][1]          = "Jones"
...                                      ...
people[NumOfNames][0] = "Lisa"           people[NumOfNames][1] = "Murray"

其中NumOfNames是在我的程序中的函数中计算的整数变量。为NumOfnames存储此值后,如何使用malloc将内存分配给people,使其大小为[NumOfNames]*[2]

1 个答案:

答案 0 :(得分:0)

一旦你知道了多维数组的语法,这很容易:

size_t peopleCount = ...;
char* (*people)[2] = malloc(peopleCount*sizeof(*people));

注意people这里和malloc() ed数组一样,是指向数组第一个元素的指针,i。即指向char的两个指针数组的指针。 malloc()调用只为peopleCount这样的元素分配内存。通过使用此指针类型,您可以使用malloc() ed数组,就像在问题中使用people数组一样。