当我为指针功能指定变量时,程序在运行时崩溃,但是如果我马上打印它就不会(printf(“%d”,*最大(parr,10));)
这将输出数组中最大元素的地址
#include <stdio.h>
int *Largest(int*,int);
int main (void)
{
int arr[10] = {33,7,1,3,8,5,2,10,39,22},*parr,z;
parr=arr;
z = *(Largest(parr,10));
printf ("%d",z);
}
int *Largest (int *array, int size)
{
int i,*high;
*high = 0;
for (i=0;i<size-1;i++)
if (array[i] < array[i+1]) *high = i+1;
else *high = i;
return high;
}
答案 0 :(得分:1)
您正在错误地使用指针int *high
:您根本不应在*
函数中取消引用(即应用Largest
运算符)它。相反,你应该对它进行“直接”分配。
首先,您应该在初始化时将指针指向array
的初始元素:
int *high = array; // That's the same as &array[0]
然后,您应该在索引1开始循环,并分配high
,而不是*high
:
for (int i = 1 ; i < size ; i++) {
if (array[i] > *high) {
high = &array[i];
}
}