【发布时间】:2019-12-06 22:22:26
【问题描述】:
这是我的代码,它可以通过指针找到数组中的最大数字。
#define ELTS 5
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i, *high, *p;
int array[ELTS]={200,34,78,600,45};
high=array;
p=array;
for ( i=1; i< ELTS; i++ ) {
p++;
if (*p > *high) high = p;
}
printf("the highest number is %d \n", *high);
printf("at address %p \n", high);
printf("index %ld \n", high);
printf("index %ld \n", array);
printf("at index %ld of array \n", high-array);
exit(0);
}
我还需要找到这个数字的索引号,我在网上做了一些研究。并发现我可以使用printf("at index %ld of array \n", high-array); 来获取最高数字的索引。
但是,我不明白它是如何工作的,谁能给我解释一下?
【问题讨论】:
-
数组声明中使用了什么ELTS?
-
对不起,我忘了放#define,我编辑了。
-
您正在使用指针算法。
high和array都是隐式指针。您可以像ints一样减去/添加和增加指针。 tutorialspoint.com/cprogramming/c_pointer_arithmetic.htm -
@uMdRupert:
high不是隐式指针。它是一个实际的显式指针。 -
@EricPostpischil 正确 - 我无法阅读。