我在 main 下的输出不是我所期望的

My output under main is not what I am expecting

本文关键字:期望 输出 main 我在      更新时间:2023-10-16

我的任务是编写一个程序,询问用户他/她想输入多少个整数。动态创建数组并接受来自用户的数字并将它们放入数组。将数组传递给函数以确定输入的最小数字。打印最小数字。在适当或可能的情况下使用指针表示法。

我觉得我掌握了数组和指针符号的传递(请随时纠正我,因为我总是渴望学习),但 main 函数下的输出不是我所期望的,或者可能是我应该期待的,但没有意识到。 这是我到目前为止所拥有的,但我坚持让它在用户中输出最小的值输入数组。

#include "stdafx.h"
void CreateValues (int [], int);
int FindSmallest(int [], int);
int _tmain(int argc, _TCHAR* argv[])
{
int numValues = 0;

cout << "How many values would you like to enter?" << endl;
cin >> numValues;
int *pArray = new int[numValues];
CreateValues (pArray, numValues);
FindSmallest(pArray, numValues);
delete[] pArray;
int i = 0;
i = FindSmallest(pArray, sizeof(pArray)/sizeof(pArray[0]));
cout<<"The smallest number in the array is "<<(*pArray + i)<<endl;
system("pause");
return 0;
}
void CreateValues (int pArray[], int numValues)
{
for (int i = 0; i < numValues; i++)
{
    cout << "Please enter value #" << i+1<< endl;
    cin >> *(pArray+i);
}
}
int FindSmallest(int pArray[], int numValues)
{
int index = 0;
int x = sizeof(pArray);
for (int i = 0; i < numValues; i++)
{
    if (pArray[i] < pArray[index])
    {
            index = i;
    }
}
return index;
}
任何

可以提供的帮助将不胜感激。干杯!!

这个:

FindSmallest(pArray, numValues);
delete[] pArray;
int i = 0;
i = FindSmallest(pArray, sizeof(pArray)/sizeof(pArray[0]));

应该是这样的:

int i = 0;
i = FindSmallest(pArray, numValues);
delete [] pArray;

或者,再缩短一点:

int i = FindSmallest(pArray, numValues);
delete [] pArray;

我希望你能明白为什么在删除数组之前必须找到最小的值。

此外,sizeof(pArray)/sizeof(pArray[0])是一个仅适用于静态分配数组的技巧。

请使用以下代码:

int i = 0;
i = FindSmallest(pArray, numValues);
cout<<"The smallest number in the array is "<<*(pArray + i)<<endl;

sizeof(pArray)/sizeof(pArray[0])是错误的,因为pArray是一个指针,所以你不能元素编号。

首先,为什么稍后使用 pArray 时会delete[] pArray

i = FindSmallest(pArray, sizeof(pArray)/sizeof(pArray[0]));

其次,您之前的FindSmallest(pArray, numValues);已经完成了寻找最小值的工作,因此提到的i = FindSmallest(...)是重复/丰富的。此外,您应该声明一个int来捕获 FindSmallest() 的返回值。

int min = FindSmallest(pArray, numValues);
cout << "The smallest value is: " << pArray[min];
delete[] pArray;