C语言初阶阶段的重难点知识总结

本文概述了C语言学习中的关键点,包括一维数组创建规范、scanf与getchar/gets的区别,以及'*'解引用操作的难点。通过实例解析了字符数组初始化、输入函数的工作原理和*运算符在指针操作中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在完成了c语言初阶的学习后,本人总结了一些重难点知识,适合初学者阅读。

一维数组重难点解析:

 注意创建字符串数组时不能如下图创建:

char arr[]={"abc"};//error

还有就是初始化数组时如果没有规定大小,那么初始化数值时不能就初始化0,否则数组默认大小为1。如下图:

scanf()与getchar()以及gets()重难点解析:

1.getchar()

getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab)

2.scanf()

scanf()仍然读取的是缓冲区的数据。下面是具体说明:

scanf("%c",&a);
/*从键盘输入一个字符赋值给a,剩下所有字符(包括空格、回车、Tab)存储在缓冲区.注意的是scanf读取单个字符时能读取上述三个字符.*/
scanf("%s",a);
/*从键盘上输入一个字符串赋值给数组a,遇到空格、回车、Tab结束,剩下所有字符(包括空格、回车、Tab)存储在缓冲区,并在字符串后自动添加‘\0’作为结束标志.注意的是scanf读取字符串时不能读取上述三个字符.*/

3.gets()

gtes()可接受回车键之前输入的所有字符(包括空格和Tab)且这些字符都放在缓冲区,并用’\n’替代 ‘\0’,也就是在读取最后一个回车键后,将回车键转化为‘\0’将其作为字符串结束标志,回车键不会留在输入缓冲区中

“*”解引用操作符重难点解析:

然后是*p的相关问题: 

1.*p++==*(p++),原因:虽然++的优先级高于*,但这是后置++,所以不管p是否在()内都要先对p进行解引用。然后对p进行++操作,注意不是对*p的值++,是对p++,这是由于++与p的结合性更高


2.*++p==*(++p),原因:++优先级高于*,且是前置++,所以不管p是否在()内都要先对p++,在对++后的p进行解引用操作。


3.++(*p)==(*p)++,原因:()括号的优先级高于++,所以不管是前置++还是后置++都要先计算()内的数据,再对该数据++。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值