美文网首页数据结构与算法教程互联网科技程序员
程序员编程C语言指针答疑:小心scanf函数给指针输错值

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

作者: 榆西带你飞 | 来源:发表于2019-09-25 21:48 被阅读0次

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

更多C语言学习答疑文章,请参阅:

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

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

给你下述C程序代码:

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

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程序代码,如下:

image

C程序代码

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

image

运行结果

结果报错了?

3、C程序代码分析

3.1 分析

我们仔细来看第9行:

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

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

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

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

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

正确的写法是:

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

三、C语言指针试题总结

这道C语言指针试题看上去是不是有点绕?其实也是绕不开我提出的“己他”概念和“星指组合”概念,所以我一直跟同学们说“C语言指针就是个纸老虎”!
想学好C语言的伙伴可以私信回复 领取资料 领取C语言学习资料哦!
【C/C++学习、面试;文档、视频资源免费获取​】

12.png

相关文章

  • 程序员编程C语言指针答疑:小心scanf函数给指针输错值

    一、程序员编程C语言答疑合集 更多C语言学习答疑文章,请参阅: 点击下方,加入我的“C语言答疑课堂”圈子吧,第一时...

  • 程序员编程C语言指针答疑:小心scanf函数给指针输错值

    一、程序员编程C语言答疑合集 更多C语言学习答疑文章,请参阅: 点击下方,加入我的“C语言交流”社区吧,第一时间看...

  • 面经——指针和引用的区别

    为什么使用指针 每一个编程语言都使用指针C++将指针暴露给程序员,而Java和c#将指针隐藏起来。 使用指针的优点...

  • [初学C++]浅谈C C++引用和指针的联系和区别

    为什么C/C++语言使用指针? ①一方面,每一种编程语言都使用指针。不止C/C++使用指针。每一种编程语言都使用指...

  • [Swift]结构体指针操作

    C语言的指针操作 在c语言中申明一个变量并通过指针修改该变量的值 a value is 2 c语言操作结构体指针操...

  • 2018-06-05

    C语言指针教程 (一)什么是C语言指针指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。...

  • Xcode崩溃原因汇总

    调用野指针 野指针定义:C语言: 当我们声明1个指针变量,没有为这个指针变量赋初始值.这个指针变量的值是1个垃圾指...

  • iOS崩溃总结

    一 野指针 C语言 当我们声明1个指针变量,没有为这个指针变量赋初始值.这个指针变量的值是1个垃圾指针 ,指向1块...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • C语言05- 指针

    C语言05- 指针 13:指针 指针是C语言中的精华,也是C语言程序的重点和难点。 13.1:指针定义与使用 指针...

网友评论

    本文标题:程序员编程C语言指针答疑:小心scanf函数给指针输错值

    本文链接:https://www.haomeiwen.com/subject/httiuctx.html