void findmax(int arr[],int,int*);
void findMax(int arr[], int n, int** pToMax)
{
if (n <= 0)
return; // no items, no maximum!
int max = arr[0];
*pToMax = &arr[0];
int i;
for ( i = 1; i < n; i++)
{
if (arr[i] > max)
{
max = arr[i];
*pToMax = (arr+i);
}
}
}
int main()
{
int nums[4] = { 5, 3, 15, 6 };
int *ptr;
findMax(nums, 4, &ptr);
printf("The maximum is at address %u\n", ptr
); printf("It's at index %d\n",ptr
- nums
); printf("Its value is %d\n", *ptr
); }
dm9pZCBmaW5kbWF4KGludCBhcnJbXSxpbnQsaW50Kik7CnZvaWQgZmluZE1heChpbnQgYXJyW10sIGludCBuLCBpbnQqKiBwVG9NYXgpCnsKICAgIGlmIChuIDw9IDApIAogICAgICAgIHJldHVybjsgICAgICAvLyBubyBpdGVtcywgbm8gbWF4aW11bSEKCmludCBtYXggPSBhcnJbMF07CipwVG9NYXggPSAmYXJyWzBdOwppbnQgaTsKCmZvciAoIGkgPSAxOyBpIDwgbjsgaSsrKQp7CiAgICBpZiAoYXJyW2ldID4gbWF4KQogICAgewogICAgICAgICBtYXggPSBhcnJbaV07CiAgICAgICAgICpwVG9NYXggPSAoYXJyK2kpOwogICAgfQp9Cgp9ICAgICAgIAppbnQgbWFpbigpCnsKICAgIGludCBudW1zWzRdID0geyA1LCAzLCAxNSwgNiB9OwogICAgaW50ICpwdHI7CiAgICBmaW5kTWF4KG51bXMsIDQsICZwdHIpOwogICAgcHJpbnRmKCJUaGUgbWF4aW11bSBpcyBhdCBhZGRyZXNzICV1XG4iLCBwdHIpOwogICAgcHJpbnRmKCJJdCdzIGF0IGluZGV4ICVkXG4iLHB0ciAtIG51bXMpOwogICAgcHJpbnRmKCJJdHMgdmFsdWUgaXMgJWRcbiIsICpwdHIpOwp9