0

我遇到了这个类似的问题。但我的优势是我知道每个字符串的长度为 260 个字符。

有希望吗?

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

这行不通。

4

3 回答 3

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 给出了指针的大小。

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

于 2013-08-22T21:16:21.330 回答
1

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

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

如果stringArray在全局声明或该语句在您声明它的函数内,您发布的内容将起作用。

于 2013-08-22T20:55:38.633 回答
1

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

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

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

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

有时,虽然不是直接可行的解决方案仍然可以通过其他方法实现!

于 2013-08-22T21:36:27.143 回答