我遇到了这个类似的问题。但我的优势是我知道每个字符串的长度为 260 个字符。
有希望吗?
int noOfStrings = sizeof(stringArray)/sizeof(stringArray[0]);
这行不通。
这取决于 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 给出了指针的大小。
它们是完全不同的两种东西,只是看起来很相似。
正如它所说。你不能(除非它是函数的局部变量)。由于数组的传递方式,它们会降级为指针,并且所有大小信息都会丢失(在创建数组的上下文之外,因为编译器无法再对其进行假设)。
您必须显式传递大小(或始终传递相同的大小)。
如果stringArray
在全局声明或该语句在您声明它的函数内,您发布的内容将起作用。
请发布您的代码。乍一看,您想要在运行时计算值的特定解决方案是不可能的。
但是,您可以将宏编码/定义为:
#define strsize sizeof(stringArray) / sizeof(char *)
如果 stringArray 是一个 char 指针数组,但没有看到您的源代码,则很难推荐特定的解决方案。
有时,虽然不是直接可行的解决方案仍然可以通过其他方法实现!