求助大神 关于指针的题

Snyze 2019-09-12 12:22:25
小白对指针不懂 老师说用指针实现两个数的加
...全文
82 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
待续_1006 2019-09-12
  • 打赏
  • 举报
回复
引用 2 楼 棉猴 的回复:
《C++Primer第五版中文版》中提到
操作符*叫做解引用符,如果指针指向了一个对象,则允许使用解引用符来访问该对象。对指针解引用会得出所指向的对象。
你的代码写的挺不错的,我稍微改了下
#include<stdio.h>
int add(int*p, int* q);
int main()
{
int a, e, c;
printf("输入两个数:\n");
scanf("%d%d", &a, &e);
c = add(&a, &e);
printf("%d\n", c);
return 0;
}

int add(int*p, int* q)
{
int t;
t = *p + *q;
return t;
}

以下是在VS2015中调试的结果


大神所谓的挺不错指的是什么?从哪几行代码看出来的?
_肆 2019-09-12
  • 打赏
  • 举报
回复
理解int *p的时候,最好理解成(int *) p,(int*)是一种类型,叫指针,当然(char*) (float*)....都是指针;
所以你写的add函数,理解成int add((int*) p,(int*) q),然后main里面调用的时候执行的是p=a;q=e;而并非*p=a;*q=e;这两者的区别就是:p=a时前面是(int*)后面是int,类型不一致,一般编译器会报错,如果不报错,就等于让p指向了a的地址即*p的值是a的地址而不是a的值(等同*p=&a);而*p=a,才是你想要达到的效果,把a的值给p,两边都是int
棉猴 2019-09-12
  • 打赏
  • 举报
回复
《C++Primer第五版中文版》中提到
操作符*叫做解引用符,如果指针指向了一个对象,则允许使用解引用符来访问该对象。对指针解引用会得出所指向的对象。
你的代码写的挺不错的,我稍微改了下
#include<stdio.h>
int add(int*p, int* q);
int main()
{
int a, e, c;
printf("输入两个数:\n");
scanf("%d%d", &a, &e);
c = add(&a, &e);
printf("%d\n", c);
return 0;
}

int add(int*p, int* q)
{
int t;
t = *p + *q;
return t;
}

以下是在VS2015中调试的结果
Mapleas 2019-09-12
  • 打赏
  • 举报
回复
指针加*号代表取值,当指针p指向a的时候*p就是a的值
自信男孩 2019-09-12
  • 打赏
  • 举报
回复
t是野指针,*t = *p + *q;可能会导致段错误;建议直接用int t; t = *p + *q; return t;

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧