c - 用指针打印最大值
问题描述
#include <stdio.h>
void MaxandMin(int * arr, int len,int **p1, int **p2);
int main(void)
{
int arr[5] = {1,3,5,2,4};
int len = sizeof(arr) / sizeof(int);
int * maxPtr;
int * minPtr;
int ** dptr1 = &minPtr;
int ** dptr2 = &maxPtr;
MaxandMin(arr,len, dptr1, dptr2);
printf("max is %d, min is %d\n", *maxPtr, *minPtr);
return 0;
}
void MaxandMin(int * arr, int len, int **p1, int **p2)
{
int * max;
int * min;
max = min = &arr[0];
for (int i = 0; i < len; len++)
{
if (*max < *(arr + i))
max = (arr + i);
if (*min > *(arr + i))
min = (arr + i);
}
*p1 = max;
*p2 = min;
}
我想在数组 arr 中打印最大值和最小值。我认为没有错,但我看不到任何输出。我尝试了更多的指针和地址表达式。那么请问在这种情况下如何查看该程序的输出?谢谢你。
解决方案
增量i
而不是len
:
for (int i = 0; i < len; i++)
{ ... }
*p1 = min;
*p2 = max;
*p1
(此外,对和的分配*p2
是混淆的)。
其他一些提示
- 你可以只写
max = min = arr
。 - 你不需要
dptr1
anddptr2
:MaxandMin(arr,len, &minPtr, &maxPtr)
推荐阅读
- go - 在 Go 中将多个结构传递到 ExecuteTemplate - 最佳实践
- java - Java中的字母数字凯撒密码
- ios - 不知道为什么我的自定义 UICollectionViewCell 不起作用?
- html - iOS 浏览器无法正确渲染 SVG
- linq - 将一列的值连接成一行
- javascript - 停止重新渲染 FlatList 中的其他类似组件
- java - 为创建 AD 帐户编写的 Java 代码但发生 LDAP 异常
- c# - 评估表中反射的更智能方法
- git - Github 新分支创建限制
- ios - 如果应用从不调用 SDK 上的任何方法,嵌入在 iOS 应用中的第 3 方 SDK 可以运行代码吗?