为什么不能访问此C ++数组的大小?

时间:2018-11-27 07:16:33

标签: c++ algorithm data-structures deque

我是C ++的新手,我正在尝试编写一个函数来解决this的挑战。我的代码如下:

<?php

if(isset($_GET['orderId']) && $_GET['orderId']!='')
{
  $orderid=$_GET['orderId']; 
}
else
{
   echo 2;
}
$orderid='';

$sqlorder = "SELECT tracking_id,order_id from do_order where order_id='".$orderid."' limit 1";
$resultdoorder = $db_handle->runSelectQuerys($sqlorder);
if($resultdoorder['tracking_id']=='')
{
  echo 0;
  //var_dump("tracking_id");
}

除其他外,此代码引发错误:

  

“在'arr'中要求成员'size'的要求,属于非班级类型   ‘int *’int i = arr.size();“

有人可以帮我理解这是什么意思吗?我是否要尝试从类外部引用某些内容,以便需要使用指针?数组声明方式有问题吗?

提前谢谢!

2 个答案:

答案 0 :(得分:1)

C风格的数组不是对象,因此不能在其上调用size。它只退化为一个指针,如果您在此处传递它

void printKMax(int arr[], int n, int k){

然后,此功能甚至都不知道大小。要解决此问题,您需要单独传递大小,作为另一个参数。另外,您可以只使用诸如std::vector之类的数据结构,在这种情况下,我建议您不要使用普通数组。您将拥有int arr[n];而不是std::vector<int> arr;。然后,您可以在std::vector函数中查询printKMax中的size。访问向量使用与访问数组相同的语法,并且使用cin >> arr填充向量的工作方式与您现在使用的方式类似。

答案 1 :(得分:0)

您可以使用此语句获取数组的长度

int length = (sizeof(arr)/sizeof(*arr));