大家好,我是大河马。这半个月可以说玩命了,从一开始的见坑就进,一知半解;到现在的开始揣摩出题人的坑出的是否有问题,感觉一路走过来提升还是挺大的。
在这个月的一开始,我开始刷牛客的题库,之前虽然也有断断续续的刷过里面的题,但是看着拿3700多道的题,和我在一旁的手机,所以嘛,懂得都懂,效率是非常的低迷。这半个月学习氛围比较好,所以干劲十足,也有了一些新的体会。
下面开始上干货!!!
我认为在C语言中,最难理解的部分就是关于指针相关的知识点,一开始看指针,j就像下面这些让人摸不着头脑的东西:
int *p;
int *p[4];
int (*p)[4];
int *p();
int (*p)();
初见还是很让人抓狂的,来几个稍微恶心的例子:
int *fun();//指针函数
int (*fun)();//函数指针
int *(*fun())[];//阿巴阿巴阿巴
我们会发现当结构变得复杂起来的时候我们如果没有一个好用的准则我们很难理清其中的关系。但是掌握了这条基本原则就会好很多:
由近及远,从右向左。这句话在C语言的指针相关的知识可太有用了!各位用过之后一定会体会。
而另一个让人抓狂的就是实型,tnnd!只要一跟这个东西挂钩,都会变得恶心起来。比如:
1.用整形给实型赋值时,后面精度会利用隐式类型转换,反之,实型给整形赋值同理。
2.实型数据不能够进行位运算,因为实行的存储结构和整形不一样,32位机中,为1为符号位,8位尾数位,23位指数位。
3.在switch语句中,也不能用实型作为开关变量。
4.实型变量在比大小时应该注意小数点之后的精度。
5.当实型和整形做除法时,其中一个为0,猜猜会发生什么?
编译过后,并不会报错,而且有输出结果为inf。
想知道为什么吗?不好意思,我先吃饭去了(实在是太饿了),下回我们再聊吧,各位喜欢的可以关注一下我,谢谢!