C ++使用ONLY POINTERS查找数组的最大元素

时间:2015-09-04 03:14:30

标签: c++ loops pointers for-loop

我有一个任务,我必须只使用指针找到数组的max和min元素。方向说你必须使用指针,但是如果你可以创建变量然后只是不使用它们并使指针指向它们或者如果在程序中实际上不能成为一个常规变量声明则不明确。

我已经完成了整个任务,通过声明变量然后使指针指向它们但是为了安全我正在重做它而没有变量。

我唯一遇到的问题是只使用指针进行for循环,因为没有变量设置为0,我可以使指针指向并获取内存地址0以启动计数器。

我会这样做:

int i = 0;

int *counterptr = &i;

cout << "Please input the array values" << endl;

for (*counterptr ; *counterptr < 10; *counterptr += 1)
{

}

但是因为我不能让变量i指向我不知道如何获得用于指针的0的内存地址。这就是我现在所拥有的,但我不知道该使counterptr等于。

float nums[10];
int *counterptr = ;
float *maxptr, *minptr, *difference;
maxptr = &nums[0];
minptr = &nums[0];

cout << "Please input the array values" << endl;

for (*counterptr ; *counterptr < 10; *counterptr += 1)
{
    cin >> nums[*counterptr];
    if (nums[*counterptr] > *maxptr)
    {
        maxptr = &nums[*counterptr];
    }
    if (nums[*counterptr] < *minptr)
    {
        minptr = &nums[*counterptr];
    }

}

任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

更正后的程序片段如下。它可以写得更好,但我修改了你的理解,从你的代码改为现在工作。 counterptr是数组元素中的指针(作为迭代器),* counterptr将是其中一个元素,类似地* minptr和* maxptr是最小和最大元素,而minptr和maxptr分别是指向数组中最小和最大元素的指针浮点数。希望这会有所帮助。

float nums[10];
float *counterptr;
float *maxptr, *minptr, *difference;
maxptr = &nums[0];
minptr = &nums[0];

cout << "Please input the array values" << endl;

for (counterptr = nums, counterptr < nums + 10; counterptr++)
{
    cin >> *counterptr;
    if (*counterptr > *maxptr)
    {
        maxptr = counterptr;
    }
    if (*counterptr < *minptr)
    {
        minptr = counterptr;
    }

}