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将传递地址本身。如果我错了,请解释。嘿,谢谢你。你能给我一些链接或资源,我可以从那里清楚我的指针概念。谢谢你,伙计,真的很感谢你的帮助。