Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 正在尝试打印数组的最大值..但打印垃圾_C_Arrays_Pointers_Printf - Fatal编程技术网

C 正在尝试打印数组的最大值..但打印垃圾

C 正在尝试打印数组的最大值..但打印垃圾,c,arrays,pointers,printf,C,Arrays,Pointers,Printf,嘿,我正在尝试使用函数和指针打印数组中最大的元素。下面是我的代码,但它的打印垃圾值。请帮忙 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]; for (int i = 1;

嘿,我正在尝试使用函数和指针打印数组中最大的元素。下面是我的代码,但它的打印垃圾值。请帮忙

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

for (int 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);
}
void findmax(int-arr[],int,int*);
void findMax(int arr[],int n,int*pToMax)
{
如果(n最大值)
{
max=arr[i];
pToMax=(arr+i);
}
}
}       
int main()
{
int nums[4]={5,3,15,6};
int*ptr;
findMax(nums,4,ptr);
printf(“最大值在地址%u\n”,ptr);
printf(“它位于索引%d\n”,ptr-nums);
printf(“其值为%d\n”,*ptr);
}

int*pToMax
findMax(int arr[],int n,int*pToMax)

调用为
findMax(nums,4,ptr)
您只需将
ptr
作为值传递

函数退出后,将不会反映更新的值

您需要使用
**pToMax

保存地址

void findMax(int arr[], int n, int** pToMax)
{
    if (n <= 0) 
        return;      // no items, no maximum!

int max = arr[0];
*pToMax = &arr[0]; //Store base address

for (int i = 1; i < n; i++)
{
    if (arr[i] > max)
    {
         max = arr[i];
         *pToMax = (arr+i); //Store max address
    }
}

}
void findMax(int arr[],int n,int**pToMax)
{
如果(n最大值)
{
max=arr[i];
*pToMax=(arr+i);//存储最大地址
}
}
}
呼叫使用


findMax(nums、4和ptr)

中的
int*pToMax
一起查找最大值(int arr[],int n,int*pToMax)

调用为
findMax(nums,4,ptr)
您只需将
ptr
作为值传递

函数退出后,将不会反映更新的值

您需要使用
**pToMax

保存地址

void findMax(int arr[], int n, int** pToMax)
{
    if (n <= 0) 
        return;      // no items, no maximum!

int max = arr[0];
*pToMax = &arr[0]; //Store base address

for (int i = 1; i < n; i++)
{
    if (arr[i] > max)
    {
         max = arr[i];
         *pToMax = (arr+i); //Store max address
    }
}

}
void findMax(int arr[],int n,int**pToMax)
{
如果(n最大值)
{
max=arr[i];
*pToMax=(arr+i);//存储最大地址
}
}
}
呼叫使用


findMax(nums、4和ptr)

是的,按您的方式进行,但它会将第一个元素打印为最大值。另外,ptomax将存储值(指针工作时),那么为什么要存储地址呢?你不认为传递ptr就像传递地址一样……因为毕竟它是一个指针,ptr将传递地址本身。如果我错了,请解释。嘿,谢谢你。你能不能给我一些链接或资源,我可以从那里清楚我的指针概念。谢谢你,伙计,真的很感谢你的帮助。是的,你这样做了,但它打印的第一个元素作为最大值。另外,ptomax将存储值(指针工作时),那么为什么要存储地址呢?你不认为传递ptr就像传递地址一样……因为毕竟它是一个指针,ptr将传递地址本身。如果我错了,请解释。嘿,谢谢你。你能给我一些链接或资源,我可以从那里清楚我的指针概念。谢谢你,伙计,真的很感谢你的帮助。