计算数组的元素数量...是否可以仅通过声明返回类型来引用其索引值?什么?怎么样?为什么? 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;