VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 809|回复: 5

新手学指针的问题

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-19 09:00:02 | 显示全部楼层 |阅读模式
#include<iostream>
int sub(int*,int*);    //声明sub函数,并有两个整形的指针参数
int main()
{
        using namespace std;
        int a=100,b=200;
        cout<<"Before,print a and b: "<<a<<" and "<<b<<"\n";
        cout<<"Go to sub()..."<<"\n";
        sub(&a,&b);  //传递整形a和b的地址到sub()
         cout<<"After,print a and b: "<<a<<" and "<<b<<"\n";
        return 0;
}
int sub(int *x,int *y)  //x,y即,a和b的地址,传入函数中
{
int temp;
temp=*x;  //将X地址处的值,赋给整形temp
*x=*y;    //将y地址处的值,赋给x地址指向的内存
*y=temp;  //将整形temp的值,赋给y地址指向的内存
return *x,*y;  //返回x地址和y地址处的值
}


注释里这样的理解正确吗????
回复

使用道具 举报

0

主题

49

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-1-26 01:54:01 | 显示全部楼层
return *x,*y;  //返回x地址和y地址处的值
return 在这里只能返回一个int值,
同时由于这里参数使用了传指针,在函数里已经将x,y所指地址的内容改变了,不需要返回!可以将sub改为:
void sub(int*,int*);
回复

使用道具 举报

0

主题

49

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-1-26 02:09:01 | 显示全部楼层
其他的正确
回复

使用道具 举报

0

主题

12

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-1-26 03:18:01 | 显示全部楼层
//返回x地址和y地址处的值
应该是最终返回y地址处的值
回复

使用道具 举报

0

主题

14

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-1-26 18:27:02 | 显示全部楼层
不用返回,a和b的值已经被修改了
去掉return *x,*y;
int sub(int *x,int *y)改为void sub(int *x,int *y)
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-27 12:36:01 | 显示全部楼层
明白了 谢谢啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表