C语言指针,纸老虎

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

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

也可以加入下方我的“C语言答疑课堂”圈子,第一时间看到我给大家带来的C语言试题解析!

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

给你下述C程序代码:int paraInt1 = 1, paraInt2 = 2;

int const paraInt3 = 3;

const int *pInt1 = &paraInt1;

int *const pInt2 = &paraInt2;

int const *pInt3 = &paraInt1;

*paraInt3 = 4;

pInt1 = &paraInt2;

*pInt2 = 5;

pInt2 = (int *)0x6;

pInt2 = &paraInt1;

pInt3 = 0x123;

请问这段C程序代码哪里有错?

三、【计算机编程】【C语言指针答疑】

1、“己他”概念来解题

这道C程序题的代码看上去让人“眼花缭乱”,其实使用我提出的C语言指针“己他”概念来解这道题还是很简单的。有关C语言指针的“己他”概念在我的专栏:

的第九章和第十章有详细的阐述,如下:

简单来说,C语言指针的“己他”概念分为“己X”概念和“他X”概念,分别如下:

1.1 “己X”概念

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

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

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

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

1.2 “他X”概念

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

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

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

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

这道C语言指针试题就会用到“己他”概念中的“己值”、“他值”的概念!

2、C程序代码

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

C程序代码

这段C程序代码我定义了四个int型变量,接着我又定义了三个指针变量,并且使用const来修饰指针变量。然后我编译的结果如下:

编译结果

3、C程序代码分析

下面我们就用“己值”的概念来分析这道C语言试题!

3.1 分析1

在C程序代码的第6行和第12行有如下语句:第6行:int const paraInt3 = 3;

第12行:*paraInt3 = 4;

第6行C代码仅仅是定义了一个int型变量paraInt3,可是在第12行却想把一个整数“4”赋值给paraInt3的他值。在我的专栏中很清晰地解释过:“他值是指针才有的概念,基本数据类型不可能有他值的概念”,所以第12行编译器肯定要报错。

3.2 分析2

在C程序代码的第9行、第15行和第16行有如下语句:第9行:int *const pInt2 = &paraInt2;

第15行:pInt2 = (int *)0x6;

第16行:pInt2 = &paraInt1;

第9行中定义指针变量pInt2时,前面有const修饰符,意思就是指针变量pInt2的初始己值一旦被赋值后,后面就不能再变了。可是在C程序代码第15行和第16行仍然试图给指针变量pInt2的己值赋值,编译器当然会报错了。

3.3 分析3

在C程序代码的第17行有如下语句:第17行:pInt3 = 0x123;

这一行中改变指针变量pInt2的己值是可以的,奈何pInt2的己型和0x123不对应。

我在专栏中说过,指针变量pInt2的己型是地址类型,而0x123只是一个int型的16进制,把一个int型赋值给一个地址类型,这八竿子打不着的事儿编译器当然会告警了!

四、C语言指针答疑试题总结

这道C程序题从代码来看,跟「C语言指针答疑」const与指针的混搭风 这篇文章的C程序试题很相像,使用C语言指针的“己他”概念就可以了,所以这道题也是个纸老虎而已!

https://www.toutiao.com/a6716788249035014660/

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

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

    一.程序员编程C语言答疑合集 https://m.toutiaocdn.com/group/6718545102257521166/?app=news_article&timestamp=15 ...

  2. 程序员c语言基础,《软考程序员》C语言基础

    程序员(英文Programmer)是从事程序开发.维护的专业人员.一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国.软件从业人员分为初级程序员.高级程序员.系统分析员 ...

  3. 指针的理解 -- java程序员学C语言日记二

    这两个星期内都是在忙公司的事情,所以没有什么时间看C语言,OK,这几天,自己就发现了C语言中指针这个东西,以前看书觉得就只不过是一4个字节的,用于存放了某对象的地址而已,同时可以用这个地址加加减减.. ...

  4. 程序员学c语言吗,为什么程序员要学C语言

    请点击此处输入图片描述 C语言不是面向对象语言.因为这一点,任何程序员学习C语言必须学会用函数思考问题.当程序员真正的去学习一门面向对象语言时,就会有C语言的函数学习基础去对比.这会使学习面向对象编程 ...

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

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

  6. Linux之父炮轰C++:糟糕程序员的垃圾语言

    原文地址为: Linux之父炮轰C++:糟糕程序员的垃圾语言 [图灵图书推荐]Linux程序设计(第3版)  众所期待的程序设计圣经 [写在前面] 此文贴出后,引起了大家的较多关注,是意料之中的事情. ...

  7. python是c语言写的吗-先学C语言还是Python?资深程序员往往是这样建议的!

    编程是一门手艺, 学习编程首先要有目的,w3cschool先带大家了解一下自己需要学习什么吧! 0.学一门语言 其实学什么语言都可以,因为语言都是互通的,C语言也好, 对于初学者来说,Python 也 ...

  8. 没学c语言可以学python_先学C语言还是Python?资深程序员往往是这样建议的!

    编程是一门手艺, 学习编程首先要有目的,w3cschool先带大家了解一下自己需要学习什么吧! 0.学一门语言 其实学什么语言都可以,因为语言都是互通的,C语言也好, 对于初学者来说,Python 也 ...

  9. php程序员学什么语言好就业_php语言是什么?学好php需要掌握什么?

    php容易学习,使用广泛,主要适用于Web开发领域,PHP是Hypertext Preprocessor的简称,用中文翻译过来的意思是"超文本预处理器"它是一种通用开源脚本语言.p ...

最新文章

  1. python中__str__与__repr__
  2. 什么是复制省略和返回值优化?
  3. 利用opencv中的类FileStorage生成和读取XML和YAML文件
  4. cmd中如何切换指定目录
  5. php怎么弄自动填充,ThinkPHP 自动填充(自动完成)详解及实例
  6. VxWorks动态加载
  7. delphi中的函数传参如何传枚举参数_我是这样使用SpringBoot(API传参)
  8. OpenShift 4 - 多云管理(2) - 部署应用
  9. python 检测直线 交点_Python+OpenCV图像处理——实现直线检测
  10. python路径及运行方式相关说明
  11. 一个女程序员的工作感悟
  12. Python读取PPT,PPT PPTX PPTM PPS PPSM PPSX
  13. EndNote X7如何在论文中嵌入中文格式要求的参考文献
  14. selenium翻页获取京东图书名称和价格
  15. 【Docker系列】Docker的网络
  16. GB28181设备接入实现web无插件多屏直播
  17. Oracle数据库常见问题及解决办法
  18. Gmail是怎么判断垃圾邮件
  19. 十速单片机学习归纳总结(四):LED闪烁实验
  20. 项目使用ts辅助_使用新技术进行辅助项目

热门文章

  1. 最强大脑非最强,你我都可是天才
  2. oracle函数-动态结果输出
  3. Oracle -- Oracle中几个数字函数、转换函数、字符串函数
  4. matlab中符号运算求解结果出现的是1i不是li
  5. 2D网络游戏开发(网络篇)(十)
  6. JAXP对XML文档进行DOM解析实现增删改
  7. wordpress加入站长统计功能
  8. python cookbook是什么意思_《Python cookbook》读书笔记三
  9. Rman备份的保留策略(retention policy)
  10. 4.UWB代码讲解注释