标题:二级指针
只看楼主
善丑恶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-11-28
结帖率:0
已结贴  问题点数:10 回复次数:7 
二级指针
程序补完题: 主函数已给出,请完成子函数change,使主函数中的指针max指向较大变量,指针min指向较小变量。但变量a和b的值不改变。

输入要求:
输入两个整数,用空格分隔。

输出要求:


数据示例1:
输入:
17 28
输出:
max=28,min=17
a=17,b=28



//补充部分
int main(){
    int a,b;
    int *max=&a, *min=&b;
    scanf("%d%d",&a,&b);
   
    change(&max,&min);
   
    printf("max=%d,min=%d\n",*max,*min);
    printf("a=%d,b=%d\n",a,b);
    return 0;
}
搜索更多相关主题的帖子: 指针 max 变量 int min 
2021-04-08 16:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
程序代码:
void change( int** pmax, int** pmin )
{
    if( **pmax < **pmin )
    {
        int* tmp = *pmax;
        *pmax = *pmin;
        *pmin = tmp;
    }
}


[此贴子已经被作者于2021-4-12 08:58编辑过]

2021-04-08 16:51
善丑恶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-11-28
得分:0 
回复 2楼 rjsp
能讲讲这是怎么理解的吗,二级指针不太理解
2021-04-10 13:54
善丑恶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-11-28
得分:0 
回复 2楼 rjsp
const int** restrict pmax, const int** restrict pmin
这个为什么要这样子定义呢
2021-04-11 15:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 3楼 善丑恶
首先,一级指针你能不能理解?
对于 TYPE max, min; 假如你想根据大小交换它俩的值怎么办?
void change( TYPE* pmax, TYPE* pmin )
{
    if( *pmax < *pmin )
    {
        TYPE tmp = *pmax;
        *pmax = *pmin;
        *pmin = tmp;
    }
}
int main( void )
{
    TYPE max=……, min=……;
    change( &max, &min );
}

对于你的题目而言,
你要交换的 max/min 的类型是 int*,也就是 TYPE 是 int*;
你要比较的不是 *pmax/*pmax,而是 *pmax/*pmax 所指向的值,也就是要比较的是 **pmax/**pmax。
所以,将上面的代码中 TYPE 换成 int*, if( *pmax < *pmin ) 换成 if( **pmax < **pmin ) 就行了,即
void change( int** pmax, int** pmin )
{
    if( **pmax < **pmin )
    {
        int* tmp = *pmax;
        *pmax = *pmin;
        *pmin = tmp;
    }
}
2021-04-12 08:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 4楼 善丑恶
在这里没用,我删掉了
2021-04-12 08:59
善丑恶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-11-28
得分:0 
回复 6楼 rjsp
const int** restrict pmax,
那之前用了contst和restrict是什么意思
2021-04-12 09:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 7楼 善丑恶
const 表示不需要去修改它;如果不加 const 那就表示它必须具有可被更改的能力,即便你不去修改它。
restrict 表示是唯一引用,不会有别人也引用它。否则编译器就要假定更改了一个会导致无关的别人也被连带给更改了。

https://zh.
https://zh.
2021-04-12 10:40
自由而无用
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:61
专家分:1456
注 册:2021-8-9
得分:0 
typedef int* ptr;
void swap(ptr *x, ptr *y);
2021-08-09 20:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505377-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.227502 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved