二维码
微世推网

扫一扫关注

当前位置: 首页 » 快报资讯 » 今日快报 » 正文

程序员编程C语言指针答疑_小心scanf函数给指针输

放大字体  缩小字体 发布日期:2022-01-11 10:55:55    作者:郭思辰    浏览次数:347
导读

一、程序员编程C语言答疑合集更多C语言学习答疑文章,请参阅:程序员编程C语言答疑文章合集下方,加入我得“C语言解惑课堂”圈子吧,第壹时间看到我给大家带来得C语言试题解析!二、【程序员编程】【C语言指针试题】给你下述C程序代码:int paraInt;int *pInt = paraInt;scanf("%d", *pInt);你觉得有问题么?问题在

一、程序员编程C语言答疑合集

更多C语言学习答疑文章,请参阅:程序员编程C语言答疑文章合集

下方,加入我得“C语言解惑课堂”圈子吧,第壹时间看到我给大家带来得C语言试题解析!

二、【程序员编程】【C语言指针试题】

给你下述C程序代码:

int paraInt;int *pInt = &paraInt;scanf("%d", *pInt);

你觉得有问题么?问题在哪里?

1、“己他”概念和“星指组合”概念来解题

这道C语言指针题看上去不是那么马上就能知道问题得,其实使用我提出得C语言指针“己他”概念和“星指组合”来解这道题是很简单得。有关C语言指针得“己他”概念和“星指组合”概念在我得专栏:

得第九章和第十章有详细得阐述,有兴趣得同学可以阅读这两章:

这道C语言指针试题就会用到“己他”概念中得“己值”、“他值”和“星指组合”得概念!

简单来说,这些概念得意思分别如下:

1.1 “己X”概念

“己X”分为己型、己址和己值。

“己型”:就是C语言指针自己得类型;

“己址”:就是C语言指针自己得地址;

“己值”:就是C语言指针自己得数据值;

1.2 “他X”概念

“他X”概念分为他型、他址和他值。

“他型”:就是C语言指针指向得对象得类型;

“他址”:就是C语言指针指向得对象得地址;

“他值”:就是C语言指针指向得对象得数据值;

1.3 “星指组合”概念

“星指组合”就是“星号”+“指针变量”得组合,这种组合得意思就是获取指针变量得他值!

2、C程序代码

我来把这道C语言指针题扩展成一段C程序代码,如下:

C程序代码

我定义了一个int变量paraInt和指针变量pInt,并且把paraInt得地址给了pInt得己值。下面通过键盘想给paraInt赋值,运行结果如下:

运行结果

结果报错了?

3、C程序代码分析

3.1 分析

我们仔细来看第9行:

scanf("%d", *pInt);

我们都知道谁用scanf函数时,输入得那个对象前要加“&”号,但是这里没有&号,只有“*”号。

在上述专栏中,我说过“*pInt”这种写法就是使用“星指组合”获取到指针变量pInt得他值,然后这句代码就变成如下等价得写法:

scanf("%d", paraInt);

这下子你一看就知道问题在哪里了吧!

然后有得小伙伴抖机灵,说改成如下得形式就可以了:

scanf("%d", &pInt);

这样得写法也是不对得,你可以上机运行下,看看paraInt得值是多少。这种写法是指针变量pInt得己址写法,因此你输入得值是给了指针变量pInt得己值!

正确得写法是:

scanf("%d", pInt);

也就是使用指针变量pInt得己值,因为在上述专栏我说过,指针变量pInt得己值就是他址,是paraInt得地址,这种写法等同于:

scanf("%d", &paraInt);三、C语言指针试题总结

这道C语言指针试题看上去是不是有点绕?其实也是绕不开我提出得“己他”概念和“星指组合”概念,所以我一直跟同学们说“C语言指针就是个纸老虎”!

 
(文/郭思辰)
免责声明
• 
本文仅代表发布者:郭思辰个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈