我想定义char * menulists[9],如何为menulist分配空间
时间: 2023-12-25 09:06:03 浏览: 71
定义一个char * menulists[9]的指针数组并不需要为每个指针分配空间,因为每个指针都可以指向一个字符串常量,这些字符串常量通常是在程序的数据段中分配的,不需要再为它们分配空间。
例如,以下代码定义了一个char * menulists[9]的指针数组,并为每个指针赋了一个字符串常量:
```
char * menulists[9] = {"Apple", "Banana", "Orange", "Grape", "Pineapple", "Watermelon", "Mango", "Kiwi", "Pear"};
```
在这里,每个指针都指向一个字符串常量,这些字符串常量都是在程序编译时分配的,不需要在运行时分配空间。
如果你需要在运行时动态地为menulists数组中的每个指针分配空间,你可以使用动态内存分配函数(如malloc或calloc),例如:
```
char * menulists[9];
for (int i = 0; i < 9; i++) {
menulists[i] = (char*) malloc(20 * sizeof(char)); // 为每个指针分配20字节的空间
strcpy(menulists[i], "default"); // 将每个字符串初始化为"default"
}
```
在这里,我们使用一个for循环遍历menulists数组中的每个指针,并使用malloc函数为它们分配20字节的空间。然后,我们使用strcpy函数将每个字符串初始化为"default"。这样,你就可以使用指针menulists[i]来访问每个字符串了。
当你使用完这些空间后,你需要使用free函数释放每个指针分配的空间,例如:
```
for (int i = 0; i < 9; i++) {
free(menulists[i]);
}
```