《C和指针》读书小记
作者:互联网
C和指针 (一)
本文是一些自己在阅读过程中的一些小的笔记与思考,并不是系统的教程。如需深入学习,请找一本《C和指针》深入阅读
1.关于K&R C 与ANSI C的区别与联系
https://www.cnblogs.com/huangjacky/archive/2012/05/04/2482529.html
2.关于typedef和#define
应该使用typedef而不是#define来创建新的类型名字后者无法正确的声明好和指针有关的东西。
如
#define d_ptr_to_char char*
d_ptr_to_char a,b;
只能达到声明a为char指针的作用,而b则被1声明为char类型。
3.关于static
在一个文件当中,如果把一个函数声明为static,则可以防止该函数被其他源文件调用。
4.C语言变量初始化
自动变量和静态变量的初始化存在一个重要的差别。
先说说静态变量初始化
静态变量初始化中,我们可以把可执行程序想要初始化的值放在当程序执行时变量将会使用的位置。当可执行程序载入到内存当中,这个已经保存了正确初始值的位置将赋值给那个变量。完成这个任务并不需要额外的时间,也不需要额外的指令,变量会得到正确的值,如果不显式的指定该变量的初始值,那么静态变量的缺省值为0
接下来是自动变量的初始化
自动变量初始化需要更多的开销
它有如下四个特点
- 自动变量的初始化较之赋值语句效率并无提高
- 隐式的赋值语句使程序执行到该变量的函数的时候,每次都将重新初始化,而静态变量只是需要在开始的时候进行一次初始化
- 由于初始化在运行时执行,它可以初始化成任何表达式(关于静态变量和自动变量的初始化,请在程序当中编写代码尝试)
- 除非对自动变量进行显式的初始化,否则它们的值总是垃圾!!!
关于static关键字
看到了3.9
项目中的stdio.h等文件忽然无法使用
goto语句
你以为你写汇编呢啊,一天天的往那里甩goto
goto语句是一种很危险的语句,它的跳转功能虽然很方便,但是阅读代码非常难受,如果我们有多重大量的循环的话,那个时候用goto其实还不错,
关于移位操作
标准规定所有无符号值执行的所有移位操作都是逻辑移位,但对于有符号值他是采用算数移位还是逻辑移位则取决于编译器,尽管可以通过测试来判断出是采用的什么样的移位方式,但是如果有很多的有符号数的位运算操作,那么这个程序就是不可移植的。
不要闲的蛋疼去用负数移位,除了编译器,神仙也不知道你搞出了什么
关于缺省值
整形字面值如果没有说明的话,缺省情况则为有符号的 int long 或者 unsigned 在缺省情况下,取最短类型但是能完整容纳这个值的数据。
sizeof 居然也是操作符???
我简直不能李姐
也就是说,如下是成立的
sizeof(int)
sizeof x
sizeof( x )
“ 强制类型转换 ”这个名字很容易记忆
关于逗号操作符
逗号操作符用于将两个或多个表达式分隔开来,这些表达式自左向右逐个进行求值,整个逗号表达式的值就是最后那个表达式的值
while(count_value(a = get_value() ), a > 0)
他很优秀也很巧妙,但是应该问自己能否让代码变得更加出色,而不是“更酷”,“更炫”或“令人印象深刻”
while(x<10)
b+=x,
x+=1;
兔崽子请不要这么写代码!
标签:初始化,变量,静态,char,读书,sizeof,小记,移位,指针 来源: https://www.cnblogs.com/littlelight/p/16346980.html