繁体   English   中英

如何获得char **的长度?

[英]How to get length of char**?

快速的c问题:如何知道char * foo []的长度?

谢谢。

你不能 并非不了解指针内部的内容,或者不提前存储该数据。

您是说数组中的字符串数是多少?

如果数组是在同一块中的堆栈上分配的,则可以使用sizeof(foo)/sizeof(foo[0])技巧。

const char *foo[] = { "abc", "def" };
const size_t length = sizeof(foo)/sizeof(foo[0]);

如果您在谈论传递给main的argv ,则可以查看argc参数。

如果数组是在堆上分配的或传递给函数的(它将分解为指针的函数),则除非您分配数组的人也将大小传递给您,否则您将不走运。

如果数组是静态分配的,则可以使用sizeof()函数。 所以sizeof(foo)/sizeof(char *)可以工作。 如果数组是动态创建的,那么您就麻烦了! 这样的数组的长度通常将被显式存储。

编辑:janks当然是正确的, sizeof是一个运算符。

还值得指出的是,C99确实允许在可变大小的数组上使用sizeof 但是,不同的编译器实现C99的不同部分,因此需要谨慎。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM