为什么使用字符指针的大小

时间:2017-07-06 13:37:09

标签: c

  

这句话的含义是什么?

char *str[10];  

为什么我们需要指定尺寸?

2 个答案:

答案 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允许在运行时确定大小的数组。