C -金沙粒 1

来源:互联网 发布:金十数据手机安卓版 编辑:程序博客网 时间:2024/04/29 10:08

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类型

  1. 不存在void类型
    C语言中没有定义void究竟是多大内存的别名。
    sizeof(void) : 在gcc中是1, 而在C++中是0
    2.void* 指针的意义
    a, C语言规定, 只有相同类型的指针才可以相互赋值
    b, void*指针作为左值用于接受任意类型指针
    c, void*指针作为右值在赋值给其他类型指针时需要强转。

sizeof

  1. sizeof并不是函数,他是编译器内置指示符 example: int a -> sizeof(a) or sizeof a 都是可以的。
  2. sizeof用于计算相应实体所占内存大小
  3. sizeof的值在编译器就已经确定了
0 0
原创粉丝点击