如何获得char**的长度?

nun*_*nos 5 c arrays

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

谢谢.

Rob*_*t P 11

你不能.并非不知道指针内部的内容,或提前存储数据.

  • +1,虽然我想知道在没有指出无数重复的情况下,将回答这个问题的多少转世. (3认同)

Nic*_*yer 6

你的意思是数组中的字符串数量?

如果阵列在同一个块中的堆栈上分配,则可以使用该sizeof(foo)/sizeof(foo[0])技巧.

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

如果您正在谈论argv传递给main,您可以查看argc参数.

如果数组是在堆上分配的,或者是传递给函数(它会衰变成指针),那么除非分配它的人也将大小传递给你,否则你运气不好.