[英]C : Find max value in array using 2 pointers (one for array, one for maximum)
我正在嘗試打印在數組中鍵入的最大值,但它一直給我我輸入的最后一個值,即使它不是鍵入的最大值。
這是練習說明:
使用指針來確定由五個類型雙精度組成的數組的最大值。 將一個指針應用於數組元素,將另一個指針應用於保存最大值的輔助變量。
這是我到目前為止所做的..
#include <stdio.h>
#include <stdlib.h>
#define array_double 5
int main() {
double m[array_double];
int c;
double *pArray;
double *pMax = 0;
printf("\nType values:\n");
for(c = 0; c < array_double; c++)
{
scanf("%lf", &m[c]);
}
pArray = m;
for(c = 0; c < array_double; c++)
{
if(pArray>pMax)
{
pMax = pArray;
}
pArray++;
}
printf("\nMax value: %.2lf", *pMax);
return 0;
}
您比較指針而不是內容。 比較值的正確方法是取消引用指針,例如
if (*pArray > *pMax) {
...
}
但要使其正常工作,您也必須初始化指針pMax
pMax = m;
以下修改后的程序產生 output,
#include <stdio.h>
#include <stdlib.h>
#define array_double 5
int main() {
double m[array_double];
int c;
double *pArray;
double *pMax = m;
printf("\nType values:\n");
for(c = 0; c < array_double; c++)
{
scanf("%lf", &m[c]);
}
pArray = m;
for(c = 0; c < array_double; c++)
{
if(*pArray>*pMax)
{
pMax = pArray;
}
pArray++;
}
printf("\nMax value: %.2lf", *pMax);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.