C语言-拾遗(1) 关键字 && 运算符
2015-04-24 09:23
183 查看
关键字
extern static const typedef define sizeof union
extern表示的是“已经存在一个变量,但是不在当前的编译单元内,需要在其他编译单元中寻找。”
extern尽量写到.h文件中Extern语句频繁的用于在多个文件之间的跨范围数据传递
static会定义一个变量
1)修饰局部变量便存放在静态数据区
2)修饰全局变量(使得该变量只能本源文件可见)
对于一个全局变量,它既可以在本源文件中被访问到,也可以在同一个工程的其它源文件中被访问(只需用extern进行声明即可)。
3)修饰函数 与全局常量一样,改变作用域
const 定义为只读变量
const在'*'后面,表示是来修饰指针变量本身,因此在声明时必须进行初始化,并且在后面不能再指向其它的变量.
(1)在C语言中用const去修饰一个变量,表示这个变量是只读的,不可通过显式的调用a去修改a的值,并且此时a是一个只读变量,不能等同于常量;
C++ 中就将其视为常量.
(2)要注意const在声明变量时所处的位置,位置不同,在意义上可能会有很大的不同。
如果const在'*'左边,则表示指针指向的变量的值不可变;
如果const在'*'右边,则表示指针的值是不可变的;
typedef是用来声明类型别名的,在实际编写代码过程使用typedef往往是为了增加代码的可读性。它可以为一串很长的类型名起一个别名,那么使用这个别名可以达到与原类型名相同的效果。
sizeof 是个运算符,对长度大小进行计算
1)如果是表达式的话,括号可以省略,但是对于类型,括号不能省;
2)sizeof求算的是所占的空间,如果作用于表达式,这个表达式是不进行求值的,只根据类型转换求得表达式的类型,而表达式的类型在编译时就可以确定。
在有二元运算符的表达式中,必须加括号,否则sizeof只会对第一个操作数进行空间计算
union 联合体
1)联合体是一个结构;
2)它的所有成员相对于基地址的偏移量都为0;
3)此结构空间要大到足够容纳最"宽"的成员;
4)其对齐方式要适合其中所有的成员;
做不同类型之间的转换 避免了强制类型转换
IP地址,之前就用的是union,取地址方便
)大小所整除。
运算符
extern static const typedef define sizeof union
extern表示的是“已经存在一个变量,但是不在当前的编译单元内,需要在其他编译单元中寻找。”
extern尽量写到.h文件中Extern语句频繁的用于在多个文件之间的跨范围数据传递
static会定义一个变量
1)修饰局部变量便存放在静态数据区
2)修饰全局变量(使得该变量只能本源文件可见)
对于一个全局变量,它既可以在本源文件中被访问到,也可以在同一个工程的其它源文件中被访问(只需用extern进行声明即可)。
3)修饰函数 与全局常量一样,改变作用域
const 定义为只读变量
const在'*'后面,表示是来修饰指针变量本身,因此在声明时必须进行初始化,并且在后面不能再指向其它的变量.
(1)在C语言中用const去修饰一个变量,表示这个变量是只读的,不可通过显式的调用a去修改a的值,并且此时a是一个只读变量,不能等同于常量;
C++ 中就将其视为常量.
(2)要注意const在声明变量时所处的位置,位置不同,在意义上可能会有很大的不同。
如果const在'*'左边,则表示指针指向的变量的值不可变;
如果const在'*'右边,则表示指针的值是不可变的;
typedef是用来声明类型别名的,在实际编写代码过程使用typedef往往是为了增加代码的可读性。它可以为一串很长的类型名起一个别名,那么使用这个别名可以达到与原类型名相同的效果。
#define INTPTR1 int* typedef int* INTPTR2; INTPTR1 p1,p2; INTPTR2 p3,p4;
sizeof 是个运算符,对长度大小进行计算
1)如果是表达式的话,括号可以省略,但是对于类型,括号不能省;
2)sizeof求算的是所占的空间,如果作用于表达式,这个表达式是不进行求值的,只根据类型转换求得表达式的类型,而表达式的类型在编译时就可以确定。
在有二元运算符的表达式中,必须加括号,否则sizeof只会对第一个操作数进行空间计算
union 联合体
1)联合体是一个结构;
2)它的所有成员相对于基地址的偏移量都为0;
3)此结构空间要大到足够容纳最"宽"的成员;
4)其对齐方式要适合其中所有的成员;
做不同类型之间的转换 避免了强制类型转换
IP地址,之前就用的是union,取地址方便
union U { char s[9]; int n; double d; };s占9字节,n占4字节,d占8字节,因此其至少需9字节的空间。然而其实际大小并不是9,用运算符sizeof测试其大小为16.这是因为这里存在字节对齐的问题,9既不能被4整除,也不能被8整除。因此补充字节到16,这样就符合所有成员的自身对齐了。从这里可以看出联合体所占的空间不仅取决于最宽成员,还跟所有成员有关系,即其大小必须满足两个条件:1)大小足够容纳最宽的成员;2)大小能被其包含的所有基本数据类型(这里的s是1
)大小所整除。
运算符
一共有十五个优先级: 1 () [] . -> 2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof 3 * / % 4 + - 5 >> << 6 > >= < <= 7 == != 8 & 9 ^ 10 | 11 && 12 || 13 ?: 14 = += -= *= /= %= |= ^= &= >>= <<= 15 , 结合性:2 13 14 是从右至左 其他都是 从左至右
相关文章推荐
- C语言的关键字,运算符,标识符
- C语言-拾遗(2) 指针 && 声明
- C语言拾遗:(int)a、&a、(int)&a、(int&)a的区别
- C语言复习笔记<1>——关键字的用法
- C语言中的运算符>>和<<是算术移位而非逻辑移位
- C语言的32个关键字,9种控制语句,34种运算符
- c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别
- c语言“->”运算符和“.”运算符的使用简介
- 单片机C语言中&和&&运算符的差异性验证
- 【C语言】第二篇·输入输出和运算符
- C语言sizeof(),条件运算符?:,取地址运算符&变量名
- 程序员_Java初级<二> 关键字、标识符、运算符、进制
- C语言的关键字“volatile"有何作用?
- C语言的32个关键字、9种控制语句、34个运算符
- C语言的32个关键字、9种控制语句、34个运算符
- 黑马程序员——java基础知识篇——>标识符、关键字、常量、进制表示、数据类型、运算符等
- C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别http://blog.csdn.net/taric_ma/article/details/7397362
- 3.偏头痛杨的Java入门教学系列之表达式&运算符&关键字&标识符&表达式篇
- C语言运算优先级 简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
- c语言 &取地址运算符的理解