注册 登录
编程论坛 C语言论坛

关于指针的使用

b1592187525 发布于 2020-01-08 00:36, 2474 次点击
选择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;
}
9 回复
#2
吕孟伟2020-01-08 08:26
#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;
}
没有修改你的算法,只针对指针语法进行了修改,并建议你多看看指针基本语法。
#3
xianfajushi2020-01-08 09:42
指针最基本的知识,定义指针,给地址,取内容.
#4
柒贰伍玖2020-01-08 14:21
你的main 函数需要定义变量,指针只能存储地址 无法存储你的值
参照2楼的改
#5
b15921875252020-01-08 23:56
回复 楼主 b1592187525
对于这行
function(&x,&y);
为什么function函数调用中的实参必须为地址,不能为指针?
#6
叶纤2020-01-09 00:55
回复 5楼 b1592187525
我现在终于能体会到有些大佬遇到这样的问题会吐血了
几点建议
1当天的基础问题最后当天解决(你这是昨天晚上的问题了)
2翻,,,,教材吧,,
3如果不想翻教材可以看我之前发的关于指针的学习笔记
4如果不想看我的学习笔记,,,,算了我还是给你讲解吧
讲解内容在楼下
#7
叶纤2020-01-09 00:59
回复 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
#8
叶纤2020-01-09 01:01
楼主学指针顺便学一下引用呗,还有我有个问题明明你发的贴比我多为什么是新手?我好想做新手啊😱,下次我提问备注我是小白是不是没人信啊😱?

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

#9
lidepeng19952020-01-09 11:02
以下是引用b1592187525在2020-1-8 23:56:54的发言:

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

/对于这个问题要讲解起来需要将近三百多字&在此处是引用,楼主学习的基础多了自然就会了
#10
forever742020-01-09 12:00
指针必须有目标,不指向目标的指针都是耍流氓。
1