我该如何计算。字符串数组中的字符串?

时间:2013-08-22 20:53:31

标签: c arrays string sizeof

我遇到this类似的问题。 但我的优点是我知道每个字符串长260个字符。

有什么希望吗?

int noOfStrings = sizeof(stringArray)/sizeof(stringArray[0]);

这不起作用。

3 个答案:

答案 0 :(得分:1)

正如它所说的那样。你不能(除非它是函数的局部变量)。由于数组的传递方式,它们会降级为指针并且所有大小的信息都会丢失(在创建数组的上下文之外,因为编译器不能再对它做出假设)。

您必须明确传递大小(或始终传递相同的大小)。

如果全局声明stringArray或该声明位于您声明它的函数内,那么您发布的内容将起作用。

答案 1 :(得分:1)

这取决于stringArray的声明方式。

在以下情况下有效:

int main()
{
    char stringArray[500];
    int noOfStrings = sizeof(stringArray)/sizeof(stringArray[0]);
    ...
}

但不在:

int function(char *stringArray)
{
    int noOfStrings = sizeof(stringArray)/sizeof(stringArray[0]);
    ...
}

在第一种情况下,stringArray是char [500]类型的常量,sizeof给出为数组分配的字节数。

在第二种情况下,stringArray是指向char的指针,sizeof给出指针的大小。

它们是两个完全不同的东西,看起来很相似。

答案 2 :(得分:1)

请发布您的代码。想要在运行时计算值的特定解决方案乍一看是不可能的。

但是,您可以将宏编码/定义为:

   #define strsize sizeof(stringArray) / sizeof(char *)

如果stringArray是一个char指针数组,但是没有看到你的来源,很难推荐一个特定的解决方案。

有时候一个不能直接实现的解决方案仍然可以通过其他方法实现!!