这句话的含义是什么?
char *str[10];
为什么我们需要指定尺寸?
答案 0 :(得分:1)
正如评论中已经提到的,char *str[10];
描述了一组char
指针。这将是有用的,例如,如果此对象将包含的字符串长度在运行时才知道。在运行时,确定每个char *
的字符串长度需要为25(例如),然后可以在堆上动态创建内存:
for(i=0;i<10;i++)
{
str[i] = calloc(26,1);//room for 25 char plus NULL terminator for each char *
}
如果在运行时之前知道字符串长度 ,则可以在堆栈上创建char数组数组:
char str[10][26]
这些方法中的任何一个都可以创建字符串数组。第一种方法要求在使用对象时释放内存:
for(i=0;i<10;i++)
{
if(str[i]) free(str[i]);
}
答案 1 :(得分:0)
为什么提供尺寸实际上是一项基本规则。然后你必须问为什么int
用于存储整数。来自C完整参考书
在C89中,必须使用常量表达式指定数组的大小。因此,在C89中,大小 数组在编译时修复。 C99允许在运行时确定大小的数组。