Uno*_*aso 0 c++ arrays parameters function heap-memory
我正在学习指针,但我被困在数组的动态分配上。
下面的代码提供了一个函数来查找具有最低值的元素。动态分配的数组作为参数传递给它。
#include <cstdlib>
#include <iostream>
using namespace std;
int findMin(int *arr, int n);
int main()
{
int *nums = new int[5];
int nums_size = sizeof(*nums);
cout << "Enter 5 numbers to find the minor:" << endl;
for(int i = 0; i < nums_size; i++)
cin >> nums[i];
cout << "The minor number is " << findMin(*nums, nums_size);
delete [] nums;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但它返回此错误:
error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]
Run Code Online (Sandbox Code Playgroud)
如何将该数组传递给函数?
只是出于好奇:如果我的数组由 5 个元素组成,为什么 for 循环允许我输入 4 个值?
如何将该数组传递给函数?
nums已经是 type int*,你不需要取消引用它:
findMin(nums, nums_size);
Run Code Online (Sandbox Code Playgroud)
如果我的数组由 5 个元素组成,为什么 for 循环允许我输入 4 个值?
int nums_size = sizeof(*nums);不会做你认为它会做的事情。它相当于sizeof(nums[0]),相当于sizeof(int),恰好4在您的机器上等于。
没有办法提取分配在堆上的数组大小,需要自己保存大小:
int nums_size = 5;
int* nums = new int[nums_size];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |