C语言——scanf用在函数指针中的报错问题.

本文讲述了作者在学习C语言时遇到的关于scanf在指针变量上的问题,涉及指针概念、地址与元素的区别,以及如何避免编译错误。通过实例解析了正确使用scanf的方法。
摘要由CSDN通过智能技术生成

今天是本人学习C语言第5天,自学时发现关于scanf用在指针变量上的问题,使我我对指针的理解有了进一步认识,特记录一次。

概述

        定义一个变量包含有四个元素:int cc = 10;0x000001

        1.类型        2.变量名字        3.内容/值/元素        4.地址

        而scanf的用法是:scanf("输入控制符",输入参数);

        功能:将用户从键盘输入的字符转化为“输入控制符”所规定格式的数据,输入参数的内容,存入到地址的变量中。

给大家举个例子:

指针

         指针是一个特殊的变量,它里面存储的内容一般被人们解释成为内存里的一个地址。

         定义一个指针变量也包含四个元素:

        1.指针类型和指针所指向的类型       2.指针的名字         3.定义指针本身的地址

        4.指针的内容或者叫指针本身所占据的内存区    指针内容可以包含地址可以包含值/元素。

scanf用在指针变量报错问题

        当我们对指针进行取地址时:&cc2代表指针取的是    int  cc2  中的内容。cc2的内容中有一个地址0x000001(cc的地址),cc2指针本身的地址是0x00000A。当scanf(“%d”&cc2)时会有两个错误让系统报错奔溃.

        1、scanf输入控制符为%d,而取cc2指针地址的内容是一个地址(cc的地址),输入控制符和输入参数错误,算法不合法导致编译报错。

        2、取地址是cc2的地址,cc2指针地址的内容是cc的地址,而不是一个元素,而cc地址中的内容未初始化,所以cc2是一个未初始化的野指针,算法不合法导致编译报错。

正确代码

        因为指针int*cc2指针已经对cc进行取地址,取值后*cc2指针的内容已经是cc的地址,所以scanf不需要再对cc2进行取地址了,直接对cc地址进行用户输入参数,最后输出提示语,比大小进行交换。

今天浅谈关于scanf和函数指针变量用法的理解,如有错误的地方,向大佬们请教,纠正错误,感谢阅览。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值