我已经声明了一个全局数组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]
?
答案 0 :(得分:0)
一旦你知道了多维数组的语法,这很容易:
size_t peopleCount = ...;
char* (*people)[2] = malloc(peopleCount*sizeof(*people));
注意people
这里和malloc()
ed数组一样,是指向数组第一个元素的指针,i。即指向char
的两个指针数组的指针。 malloc()
调用只为peopleCount
这样的元素分配内存。通过使用此指针类型,您可以使用malloc()
ed数组,就像在问题中使用people
数组一样。