我遇到this类似的问题。 但我的优点是我知道每个字符串长260个字符。
有什么希望吗?
int noOfStrings = sizeof(stringArray)/sizeof(stringArray[0]);
这不起作用。
答案 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指针数组,但是没有看到你的来源,很难推荐一个特定的解决方案。
有时候一个不能直接实现的解决方案仍然可以通过其他方法实现!!