如何在C中找到"char*"数组的长度?

bub*_*les 5 c c++

我声明了以下数组:

char* array [2] = { "One", "Two"};
Run Code Online (Sandbox Code Playgroud)

我将此数组传递给函数.如何在函数中找到此数组的长度?

Set*_*gie 17

将数据传递给函数后,无需额外的努力就无法找到数组的长度.你需要:

  1. 使用存储大小的容器,例如vector(推荐).
  2. 传递大小.这可能需要对现有代码进行最少的修改,并且是最快的修复.
  3. 使用sentinel值,如C string do 1.这使得查找数组的长度成为线性时间操作,如果忘记了哨兵值,程序可能会崩溃.对于大多数情况来说,这是最糟糕的方式.
  4. 在传递数组时使用模板来减去数组的大小.您可以在此处阅读:此阵列大小模板如何工作?

1如果您想知道,大多数人都对C字符串以这种方式工作的事实感到遗憾.

  • @Mooing,哇,那些BSTR看起来很可怕.:) 谢谢! (2认同)

par*_*mar 7

传递数组时,没有一种简单的方法可以确定函数中的大小.

您可以将数组大小作为参数传递,也可以 使用std :: vector <std :: string>

如果您感觉特别喜欢冒险,可以使用一些高级模板技术

简而言之,它看起来像

template <typename T, size_t N>
void YourFunction( T (&array)[N] )
{
    size_t myarraysize = N;
}
Run Code Online (Sandbox Code Playgroud)

  • @bubbles`int main(argc,char**argv)`.如果它是简单的主要将做不同的. (3认同)