【问题标题】:Same value every time when want to get size of array [duplicate]每次想要获取数组大小时都使用相同的值[重复]
【发布时间】:2022-01-10 11:47:23
【问题描述】:

我是 C++ 新手,所以请不要严格评判我。我正在尝试获取数组的大小,但此代码示例始终返回 2。我也只能使用 C++11。有什么问题,我该如何处理?提前谢谢你。

String string = "paris";
char * array = new char [string.length() + 1];
int arraySize = sizeof(array) / sizeof(array[0]);

【问题讨论】:

  • array 是一个指针,而不是一个数组。

标签: c++ arrays string c++11 arduino


【解决方案1】:

它返回 2 因为 array 是一个指针,这意味着 sizeof(array) 返回指针的大小,而不是数组。你有 16 位指针吗?

sizeof(array) / sizeof(array[0]); 仅适用于编译时数组。

解决方案是使用std::vectorstd::array

也使用std::size_t 表示长度,而不是int

【讨论】:

    【解决方案2】:

    您无法找出使用关键字new(您所做的方式)创建的数组的大小。使用new[] 分配的数组的大小不会以任何方式存储,以便以后访问。

    您应该改用std::vector,它为您存储length

    std::string string = "paris";
    std::vector<char> myVec(string.length() + 1); //creates vector of size string.length() + 1
    int arraySize = myVec.size();
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 2014-07-03
      相关资源
      最近更新 更多