c - 坚持在 C 中比较 2 int** 的方法
问题描述
我被困在这种方法上,找不到我的错误。该方法的描述和我的代码如下:
此函数需要 2 个 int**。它比较被指向的整数,然后将指针设置为两个整数中较小的地址。如果值相等,则两个指针都应设置为第一个指针的地址。
传入的任何一个指针都可能指向 NULL 而不是一个有效的整数——在这种情况下,另一个值隐含地是最小的,并且两个指针都应该设置为指向非空值。您可以假设两个指针都不会为 NULL。
void point_to_smallest_ptr(int** first, int** second)
{
int* ptr1;
int* ptr2;
ptr1 = *first;
ptr2 = *second;
if(ptr1 == NULL)
{
ptr1 = ptr2;
}
else if(ptr2 == NULL)
{
ptr2 = ptr1;
}
else if(*ptr1 <= *ptr2)
{
ptr2 = ptr1;
}
else
{
ptr1 = ptr2;
}
}
解决方案
“这个函数需要 2 个 int**。” 它们是first
和second
,指向 的指针int
。
“所指向的整数”是**first
和**second
。
“... 然后将指针设置为 ...” 是*first
and *second
,指向的指针int
是指,显然不是first
and second
,它们是指向目标指针的指针int
。拥有指向目标指针的指针,而不仅仅是目标指针的副本,是允许您实际将目标指针修改为int
.
“...两个整数中较小的一个的地址...”是您在指向 int 的指针之一中找到的值,即*first
or 或*second
。要找出两者中的哪一个,您需要比较 ìnt s, i.e. something like
(**first < **second)`。
“应该设置为第一个指针的地址”我认为令人困惑,我希望措辞“应该设置为第一个 int 的地址”或“应该设置为第一个指针中找到的地址诠释”。但是从上下文中可以很清楚地知道是什么意思。
推荐阅读
- swift - 如何快速排列collectionView单元格,就像一堆卡片一样
- html - 网页抓取标题属性的内容
- omnet++ - 使用 TraCIcommandInterface 在 Veins 中添加函数
- linux - 我正在尝试安装 docker。每当我运行 sudo apt-get update 时,我都会收到此错误:
- reactjs - 在另一个组件中渲染一个组件
- parsing - 描述不是 LL(1) 的 LL(2) 语言的语法,其中没有规则可以产生 epsilon?
- azure - 从 IoT 中心获取文件上传通知到事件中心
- android - 在颤动中显示不同的日期变化图像
- r - 计算迭代次数
- python - 在 Yolov3 中面临近距离物体检测问题