C -金沙粒 1
2015-10-28 21:31
218 查看
C -金沙粒 1
说明符
auto: 局部变量的默认属性,指明变量是在栈上分配空间static:
1. 修饰局部变量时,局部变量存储在程序的静态区
2. 文件作用域标识符
a, 修饰全局变量, 指明其作用域仅在声明文件中
b, 修饰函数, 说明函数只在本文件有效
register:
1. 指明将变量尽可能的存储在寄存器中,但不一定成功
2. register变量的值必须是寄存器可以接受的值(64位的变量, 你也存不到32的寄存器中, 是吧)
3. 不能用&运算符获取register变量的地址。 (可以说那些寄存器是没地址的)
4. 这个说明符常用在非常讲究实时性的系统中
extern:
1. 引用声明, 说明变量定义在其他地方
2. 强制编译器用C的方式编译代码 -> extern “C” { .. }
以上4个, 再加一个typedef, 他们可以说是存储类说明符。一个声明最对只能有一个存储类说明符。
if与switch
if需要注意的地方:1. 普通变量和0值比较时,0值应该出现在比较符号的左边。 特别而言,对于相等比较应该这样写:
if( 0 == i ) //可以错误
2. float变量不能直接与0值进行比较, 最好进行精度定义
3. bool型变量(我们一般都用int型代替),应该直接出现在条件中, 不要进行比较。
首先,这是因为C的bool型并不标准(0位假, 非0即为真)
例如:
int flag = 1; //真
应该这样写 - > while(flag) 而不是 while( flag == 1 )
swith
1. swith语句对应单个条件,多个分支的情况
2. case后面必须得有break(不然你用它干什么!) default一般加上他没坏处, 他可以帮我们处理特殊情况
3. case语句的值只能是整型或者字符型
if语句可以安全的从功能上代替switch, 而switch却无法代替if!
循环
for循环可以理解为while的简洁形式。do..while应注意不要出现下面的情况:
do { //.... n--; //n在执行自减前, 如果变为了0你怎么办? }while(n)
break: 他实质上是switch语句的附属物, 不过他的另一重要作用就是直接终止当前循环
continue: 他生来就是为循环服务的, 代表直接进入下一轮循环。
void指针与void类型
不存在void类型C语言中没有定义void究竟是多大内存的别名。
sizeof(void) : 在gcc中是1, 而在C++中是0
2.void* 指针的意义
a, C语言规定, 只有相同类型的指针才可以相互赋值
b, void*指针作为左值用于接受任意类型指针
c, void*指针作为右值在赋值给其他类型指针时需要强转。
sizeof
sizeof并不是函数,他是编译器内置指示符 example: int a -> sizeof(a) or sizeof a 都是可以的。sizeof用于计算相应实体所占内存大小
sizeof的值在编译器就已经确定了
相关文章推荐
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数
- 在C语言中转换时间的基本方法介绍
- C语言进制转换代码分享