标题:关于指针的使用
只看楼主
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
结帖率:90.32%
已结贴  问题点数:20 回复次数:9 
关于指针的使用
选择function函数两个参数中较大的值,再将这个较大的值重新赋值给两个参数。但以下代码却无法运行,是什么原因?
程序代码:
#include<stdio.h>
void function(int *a,int *b){
    if(*a>*b)
        *b=*a;
        else
            *a=*b;
}
int main(void){
    int *x;
    int *y;
    scanf("%d%d",x,y);
    function(x,y);
    printf("%d %d",*x,*y);
    return 0;
}
搜索更多相关主题的帖子: int 参数 function 指针 void 
2020-01-08 00:36
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
得分:4 
#include<stdio.h>
void function(int *a,int *b){
    if(*a>*b)
        *b=*a;
        else
            *a=*b;
}
int main(void){
    int x;
    int y;
    scanf("%d%d",&x,&y);
    function(&x,&y);
    printf("%d %d",x,y);
    return 0;
}
没有修改你的算法,只针对指针语法进行了修改,并建议你多看看指针基本语法。

借用一下侯捷的话:勿在浮沙筑高台。
2020-01-08 08:26
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:4 
指针最基本的知识,定义指针,给地址,取内容.
2020-01-08 09:42
柒贰伍玖
Rank: 2
等 级:论坛游民
威 望:1
帖 子:4
专家分:27
注 册:2019-12-28
得分:4 
你的main 函数需要定义变量,指针只能存储地址 无法存储你的值
参照2楼的改
2020-01-08 14:21
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
得分:0 
回复 楼主 b1592187525
对于这行
function(&x,&y);
为什么function函数调用中的实参必须为地址,不能为指针?
2020-01-08 23:56
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:4 
回复 5楼 b1592187525
我现在终于能体会到有些大佬遇到这样的问题会吐血了
几点建议
1当天的基础问题最后当天解决(你这是昨天晚上的问题了)
2翻,,,,教材吧,,
3如果不想翻教材可以看我之前发的关于指针的学习笔记
4如果不想看我的学习笔记,,,,算了我还是给你讲解吧
讲解内容在楼下

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-09 00:55
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
回复 6楼 叶纤
//楼主打过一遍就基本了解了,顺便说一下,指针相当于一个储存地址的变量
#include<iostream>
using namespace std;

int main()
{
    int a=1024;
    int &b=a;//const int &b=1024;//引入一个int 型的b等于a
取地址符没有int

    cout << b << endl;
    cout << &a<< endl;
    //实际上&b就是a的地址,b就是a
    //1024放进a,
    //引用必须初始化
//不可以引用常量
}//引用的效率比指针的效率高?
小白鹅总结总结*指针指向一个地址
*b就是把b里面的地指变成一个值(B是地址)
&b就是把B常量变地址
B是常量
代码#include<iostream>
using namespace std;
void a(int,int);//声明a
void b(int*,int*);//声明b
void c(int&,int&);//声明c

int main()
{int num1=5;
int num2=10;
a(num1,num2);
//cout<<num1 << " " <<  num2<< endl;
b(&num1,&num2);//void b(int*,int*);是一个地址型&能把一个变量变成地址
cout<<num1 << " " << num2<< endl;
c(num1,num2);  
//void b(int*,int*);
//是一个地址型&能把一个变量变成地址
cout<<num1 << " " << num2;



   
    //实际上&b就是a的地址
    }
  void a(int num1,int num2)//定义
{int temp=num1;//替换
num1=num2;
num2=temp;
cout<<num1 << "  " <<num2<< endl;
}  
void b(int* pnum1,int* pnum2)//定义
{int temp=*pnum1;//替换
*pnum1=*pnum2;
*pnum2=temp;
}
void c(int& num1,int& num2)//定义此时的num1变成10????
{int temp=num1;//替换
num1=num2;
num2=temp;
}5 10

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-09 00:59
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
得分:0 
楼主学指针顺便学一下引用呗,还有我有个问题明明你发的贴比我多为什么是新手?我好想做新手啊😱,下次我提问备注我是小白是不是没人信啊😱?

[此贴子已经被作者于2020-1-9 01:12编辑过]


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-01-09 01:01
lidepeng1995
Rank: 2
等 级:禁止访问
帖 子:30
专家分:43
注 册:2018-7-8
得分:4 
以下是引用b1592187525在2020-1-8 23:56:54的发言:

对于这行
function(&x,&y);
为什么function函数调用中的实参必须为地址,不能为指针?

/对于这个问题要讲解起来需要将近三百多字&在此处是引用,楼主学习的基础多了自然就会了
2020-01-09 11:02
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:4 
指针必须有目标,不指向目标的指针都是耍流氓。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-01-09 12:00



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




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

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