2015-09-04 54 views
0

我有一个赋值,我必须使用指针来查找数组的最大和最小元素。方向说你必须为所有东西使用指针,但是如果你可以创建变量然后不使用它们并指向指向它们的指针,或者如果在程序中实际上不能是一个常规变量声明,那么它就没有说清楚。C++查找数组的最大元素仅使用指针

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

我唯一遇到的麻烦是做一个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]; 
    } 

} 

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

回答

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; 
    } 

} 
+0

谢谢你这个作品完美,但我不明白为什么它的作品。如果你有时间可以再解释一下。当你设置counterptr = nums中nums的值时,它实际上将它设置为(因为它有一个数组,它有10个不同的值,你没有放置索引)。此外,为什么不设置counterptr =&#$获得它的内存地址,以便它在for循环中执行counterptr ++时不会更改意外的num的值? –

+0

@BenjaminDagg nums相当于#num [0],counterptr只是遍历列表中的一个指针,最初指向第一个元素,然后在增加时指向第二个元素,依此类推。希望澄清。 –

相关问题