正在计算一个数组的元素数量...仅通过声明 return 类型就可以引用其索引值?什么?如何?为什么? (C++)

Calculating an array's number of elements... Able to refer to its index values by just stating the return type? What? How? Why? (C++)

我正在学习如何计算数组中元素的大小和数量,遇到了一个问题。在教程中我看到 我们可以按如下方式计算数组中元素的数量...

int array_variable [] = {1, 5, 8, 10};

int array_variable_number_of_elements = sizeof(array_variable) / sizeof (int);

我知道并完全理解为什么你可以替换

sizeof (int);

sizeof (array_variable[0]); // or use any index value from the array_variable

视频似乎暗示只使用 int 是一种很好的做法,但我不明白。计算机显然不是通灵的,int 只是一种数据类型。当同一个函数中有两个int类型的数组时会发生什么?为什么这行得通?这是否有效,因为它与以下内容在同一行?

int array_variable_number_of_elements = sizeof(array_variable)

谢谢:)

第二种方法更好更通用,当您需要将数组类型 int 更改为 char 时,您根本不需要编辑第二行。

  char array_variable [] = {'a', 'b', 'c' }; //changed this line only
    
  int array_variable_number_of_elements = sizeof(array_variable) / sizeof 
  (array_variable[0]);

回答您的以下评论;

上面几行你可以像下面这样解释;


  int array_variable = {1, 2, 3, 4, 5 };
    
  int array_variable_number_of_elements = sizeof(array_variable) / sizeof ( int);
 //              ^^^^^^^^^                  ^^^^                 ^^^
//  array_variable_number_of_elements =       20     /     4 ; // 20 / 4 = 5

总数组 size 在我的系统中是 20 个字节,int 的大小是 4 个字节; 数组中的元素总数为 5;