您的位置:首页 > 编程语言 > C语言/C++

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的值在编译器就已经确定了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言