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

https://m.toutiaocdn.com/group/6718545102257521166/?app=news_article&timestamp=1564490005&req_id=20190730203324010023029200813AAE1&group_id=6718545102257521166

更多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语言指针就是个纸老虎”!

C语言编程拼错的纸条,程序员编程C语言指针答疑:小心scanf函数给指针输错值...相关推荐

  1. “中文编程”会是解决中国程序员编程效率的秘密武器,成为中国软件工程的“银弹”么?...

    一."银弹" 首先在这里解释一下"银弹"的概念,顾名思义就是银质的子弹(Silver Bullet),是古老的欧洲民间传说中能杀死狼人的利器.当然现实中是没有狼 ...

  2. c语言设计程序之数组,软考程序员考点C语言程序设计之数组

    下面希赛小编为大家整理的软考程序员考点C语言程序设计之数组,希望能帮助学友们.具体内容如下: 数组 所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后 ...

  3. 程序员编程艺术第一~十章集锦与总结(教你如何编程)--持续更新中

    程序员编程艺术第一~十章集锦与总结--面试.算法.编程 作者:July.编程艺术室. 出处:http://blog.csdn.net/v_JULY_v . 围绕"面试"." ...

  4. 世界程序员编程水平排行榜TOP50,中国第一名

    今天小编在找中国程序员水平怎么 样时,看到了几张图片.上面讲述了平台HackRank发起的一系列编程挑战竞赛的竞赛结果,小编看了数据之后只想来一句:中国的程序员,牛逼! 世界程序员编程水平排行榜TOP ...

  5. 程序员编程艺术第一 十章集锦与总结 教你如何编程 持续更新中

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 程序员编 ...

  6. 程序员编程艺术第一~十章集锦与总结

    程序员编程艺术第一~十章集锦与总结--面试.算法.编程 作者:July.编程艺术室. 出处:http://blog.csdn.net/v_JULY_v . 围绕"面试"." ...

  7. c语言 指针不能赋值吗,程序员编程C语言指针答疑:指针赋值没那么简单

    C语言指针,纸老虎 一.程序员编程C语言答疑合集 更多C语言学习答疑文章,请参阅:程序员编程C语言答疑文章合集 也可以加入下方我的"C语言答疑课堂"圈子,第一时间看到我给大家带来的 ...

  8. 程序员编程能力7个能力提升阶段分析

    前言 程序员的编程技能随着经验的积累,会逐步提高.我认为编程能力可以分为一些层次. 百牛信息技术bainiu.ltd整理发布于博客园 下面通过两个维度展开编程能力层次模型的讨论. 一个维度是编程技能层 ...

  9. [置顶] 程序员编程生产力相差10倍意味着什么?

    在软件工程研究中,被验证得最多的结论就是对于同等经验的两个不同程序员,在效率和质量上可能会有10倍的差距.研究人员还发现,这种差距也适用于团队级别上,也就是说在同一行业内的不同的团队也是如此. 软件开 ...

最新文章

  1. 如何在linux系统下修改mysql密码_如何在linux下修改mysql数据库密码?linux修改数据库密码的方法...
  2. html 如何去除浮动,CSS浮动? 如何清除浮动?
  3. tensorflow 保存训练loss_tensorflow2.0保存和加载模型 (tensorflow2.0官方教程翻译)
  4. 中国移动创新系列丛书《OPhone应用开发权威指南》读者交流活动圆满结束
  5. 编译android4.4 报错error: call to '__property_get_too_small_error' declared with attribute 的处理 (转载)...
  6. python标准库学习5 ---bisect — Array bisection algorithm
  7. SQL数据库: 增删改 精确查询 数据排序 数据库入门篇
  8. 在线html代码生成器,支持网页快速排版 CSS代码一键生成的在线设计工具
  9. mysql 查询结果作为参数_如何将数据库查询出来的字段值作为参数传入下一个请求中...
  10. stm32显示flash下载失败_Flash download failed-Cortex-M3的原因及解决办法
  11. COGS 734. [网络流24题] 方格取数问题
  12. 树莓派4B安装桌面控件wbar和conky,美化桌面(解决报错)
  13. 官宣, CSDN 2018博客之星获奖名单!
  14. secure CRT设置自动保存日志
  15. 电子设计教程24:反相比例运算电路
  16. 计算机网络技术人员的要求,计算机网络技术人员标准.doc
  17. 做完系统回来计算机连接不上网络,电脑重装系统后网络连接不上怎么处理
  18. 【Get深一度】完备正交函数集合——信号分析
  19. 一个解决中午吃什么去哪吃的程序
  20. 【单片机基础】I2C通信-基于STC89C52RC

热门文章

  1. 1.3. 一只大象口渴了,要喝20升水才能解渴,但现在只有一个深h厘米,底面半径为r厘米的小圆桶(h和r都是整数)。问大象至少要喝多少桶水才会解渴。编写程序输入半径和高度,输出需要的桶数(一定是整数)
  2. mysql压力写入测试_mysql 压力测试
  3. 矩阵论-定义、符号、以及相关理论
  4. 阿里云视频云,用技术普惠打造平民化“虚拟人”
  5. oracle rowid唯一吗,ROWID唯一性
  6. 扩张卷积(Atrous 卷积)
  7. 22 个常用的 Python 工具包
  8. canvas 画正圆
  9. iPhone设置的尺寸
  10. 第五人格鸟嘴医生技能是什么