c语言笔记1-关键字
2017-07-16 11:16
211 查看
1.数据类型:固定内存大小的别名,创建变量的模子。
例:char:1byte的别名;short:2byte的别名;int:4byte的别名
2.变量:一段实际联系存储空间的别名。程序中通过变量来申请并命名存储空间。通过变量名可以使用存储空间。
3.typedef:自定义数据类型。不是创造新的数据类型,只是给现有的数据类型重新命名。
例:typedef
int INT32;//sizeof(INT32)=
sizeof(int)=4
typedef unsigned char BYTE;//sizeof(BYTE)=sizeof(unsigned
char)=1;
typedef struct _demo
{
short s;
//2
BYTE b1;
//1
INT32 I;
//4
}DEMO;//sizeof(DEMO)=7
4.属性关键字(auto
static register)指明变量特有意义。
auto: c语言中局部变量默认属性,在栈上分配空间。
static
:变量的静态属性,只被初始化一次
同时具有“作用域限定符”的意义
修饰的局部变量存储在程序的静态区
另一意义为文件作用域标示符
修饰的全局变量/函数作用域只在声明文件中
register:
将变量存储于CPU寄存器
只是请求寄存器变量,但不一定请求成功
Register变量必须是CPU寄存器可以接受的值
不能用&运算符求register变量地址
寄存器变量用于讲究性能,对实时性要求高的实时系统中
5.if
① bool型变量出现在条件中,不要进行比较
例:bool b=TURE;
If(!b){……}【√】
If(b){……}【√】
If(b == 1){……}【×】
②
普通变量与0/常数比较时,0值/常数应出现在比较符号左边
例:if( 0
== x) 【可以避免if(0=x)的错误】
③ float
型变量不能直接进行0值比较,需要定义精度
例:#defineEPSI
0.000001
Float f= 0.0,f1=5.0;
If((-EPSI<=f)&&(f<=EPSI)){……}//替代if
(0==f)
If((5-EPSI<=f1)&&(5+EPSI>=f1))//替代if(5.0==f1)
6.switch
① case
语句中的值只能是整形或字符型
② case排序
:按字母、数字顺序排序
正情况在前、异常情况在后
Default必须有,用于异常情况或默认
③if
可以替代switch
, switch无法替代if
7.break:终止循环,用于跳出块
Continue:终止本次循环,进下次循环,用于跳出循环
Switch不能用continue
关键字,因为switch
本身没有循环
8.do{}while();的妙用:
do
{
if(……)
break;
if(……)
break;
……
}while(0);
9.goto:应禁用
,程序质量与goto出现次数成反比
10.void*指针:作为左值用于“接收”任意类型指针
作为右值赋值给其他指针需强制类型转换
例:实现memset的功能
void* my_memset(void* p,char v,int size)
{
void* ret=p;
char dest= (char*)p;
int i =0;
for(i=0;i<size;i++)
{
dest[i]=v;
}
return ret;
}
int main()
{
inta[5]={1,2,3,4,5};
long l=1000;
int i=0;
my_memset(a,0,sizeof(a));//a[5]={0,0,0,0,0}
my_memset(&l,0,sizeof(l));//l=0
return 0;
}
11.extern:
声明外部定义的变量的函数
用于“告诉”编译器c的方式编译
例:extern
“C”
{…...}
12.sizeof :编译器内置指示符,不是函数
用于计算相应实体所占用内存大小
Sizeof的值在编译器就已经确定
例:int a;
sizeof(a);【√】
sizeof
a;【√】
sizeof(int);【√】
sizeof
int;【×】
13.const:常变量
修饰的变量是只读的,本质还是变量
会占用内存空间
可以通过指针来改变值
例:const intc=1;
Int *p = (int*)&c;
*p = 3;
Const
修饰的数值空间不可改变。
14.const
指针
const int*p;/int const*p;//p可变,p指向的内容不可改变
int
const*p;//p不可变,p指向的内容可变
const
int*const p;//p和p指向的内容不可变
总结:左数右指
当const
出现在*号左边时指向的数据为常量
当const
出现在*号右边时指针本身为常量
15.volatile 编译器警告指示字
用于告诉编译器必须每次去内存中取变量值
主要修饰可能被多个线程访问的变量
也可修饰可能被未知因素更改的变量
16.柔性数组:大小待定的数组
C语言结构体的最后一个元素可以是大小未知的数组
,用结构体产生柔性数组
Typedef struct
_soft_array
{
Intlen;
Intarray[];
}softArray;
17.struct与union
Struct中的每个域在内存中独立分配空间
Union只分配最大空间,所有域共享这个空间
例:struct
c union c
{
{
Inta; int a;
Intb; int b;
}//sizeof(c):8byte
}//sizeof(c):4byte
18.enum:枚举
定义常量
默认常量在前一个值基础上依次加1
变量只能取定义时的离散值
枚举与#define区别
①#define宏常量只是简单的进行值得替换,枚举常量是真正意义上的常量
②#define宏常量无法被调试,枚举常量可以
③#define宏常量无类型信息,枚举常量是一种特定类型常量
19.typedef 用于给一个已经存在的数据类型命名
并没有定义新额类型
Typedef重定义的类型不能进行unsigned和signed扩展
Typedef与#define区别
Typedef是给已有的数据类型取别名
#define为简单的字符串替换,无别名的概念
1.数据类型:固定内存大小的别名,创建变量的模子。
例:char:1byte的别名;short:2byte的别名;int:4byte的别名
2.变量:一段实际联系存储空间的别名。程序中通过变量来申请并命名存储空间。通过变量名可以使用存储空间。
3.typedef:自定义数据类型。不是创造新的数据类型,只是给现有的数据类型重新命名。
例:typedef
int INT32;//sizeof(INT32)=
sizeof(int)=4
typedef unsigned char BYTE;//sizeof(BYTE)=sizeof(unsigned
char)=1;
typedef struct _demo
{
short s;
//2
BYTE b1;
//1
INT32 I;
//4
}DEMO;//sizeof(DEMO)=7
4.属性关键字(auto
static register)指明变量特有意义。
auto: c语言中局部变量默认属性,在栈上分配空间。
static
:变量的静态属性,只被初始化一次
同时具有“作用域限定符”的意义
修饰的局部变量存储在程序的静态区
另一意义为文件作用域标示符
修饰的全局变量/函数作用域只在声明文件中
register:
将变量存储于CPU寄存器
只是请求寄存器变量,但不一定请求成功
Register变量必须是CPU寄存器可以接受的值
不能用&运算符求register变量地址
寄存器变量用于讲究性能,对实时性要求高的实时系统中
5.if
① bool型变量出现在条件中,不要进行比较
例:bool b=TURE;
If(!b){……}【√】
If(b){……}【√】
If(b == 1){……}【×】
②
普通变量与0/常数比较时,0值/常数应出现在比较符号左边
例:if( 0
== x) 【可以避免if(0=x)的错误】
③ float
型变量不能直接进行0值比较,需要定义精度
例:#defineEPSI
0.000001
Float f= 0.0,f1=5.0;
If((-EPSI<=f)&&(f<=EPSI)){……}//替代if
(0==f)
If((5-EPSI<=f1)&&(5+EPSI>=f1))//替代if(5.0==f1)
6.switch
① case
语句中的值只能是整形或字符型
② case排序
:按字母、数字顺序排序
正情况在前、异常情况在后
Default必须有,用于异常情况或默认
③if
可以替代switch
, switch无法替代if
7.break:终止循环,用于跳出块
Continue:终止本次循环,进下次循环,用于跳出循环
Switch不能用continue
关键字,因为switch
本身没有循环
8.do{}while();的妙用:
do
{
if(……)
break;
if(……)
break;
……
}while(0);
9.goto:应禁用
,程序质量与goto出现次数成反比
10.void*指针:作为左值用于“接收”任意类型指针
作为右值赋值给其他指针需强制类型转换
例:实现memset的功能
void* my_memset(void* p,char v,int size)
{
void* ret=p;
char dest= (char*)p;
int i =0;
for(i=0;i<size;i++)
{
dest[i]=v;
}
return ret;
}
int main()
{
inta[5]={1,2,3,4,5};
long l=1000;
int i=0;
my_memset(a,0,sizeof(a));//a[5]={0,0,0,0,0}
my_memset(&l,0,sizeof(l));//l=0
return 0;
}
11.extern:
声明外部定义的变量的函数
用于“告诉”编译器c的方式编译
例:extern
“C”
{…...}
12.sizeof :编译器内置指示符,不是函数
用于计算相应实体所占用内存大小
Sizeof的值在编译器就已经确定
例:int a;
sizeof(a);【√】
sizeof
a;【√】
sizeof(int);【√】
sizeof
int;【×】
13.const:常变量
修饰的变量是只读的,本质还是变量
会占用内存空间
可以通过指针来改变值
例:const intc=1;
Int *p = (int*)&c;
*p = 3;
Const
修饰的数值空间不可改变。
14.const
指针
const int*p;/int const*p;//p可变,p指向的内容不可改变
int
const*p;//p不可变,p指向的内容可变
const
int*const p;//p和p指向的内容不可变
总结:左数右指
当const
出现在*号左边时指向的数据为常量
当const
出现在*号右边时指针本身为常量
15.volatile 编译器警告指示字
用于告诉编译器必须每次去内存中取变量值
主要修饰可能被多个线程访问的变量
也可修饰可能被未知因素更改的变量
16.柔性数组:大小待定的数组
C语言结构体的最后一个元素可以是大小未知的数组
,用结构体产生柔性数组
Typedef struct
_soft_array
{
Intlen;
Intarray[];
}softArray;
17.struct与union
Struct中的每个域在内存中独立分配空间
Union只分配最大空间,所有域共享这个空间
例:struct
c union c
{
{
Inta; int a;
Intb; int b;
}//sizeof(c):8byte
}//sizeof(c):4byte
18.enum:枚举
定义常量
默认常量在前一个值基础上依次加1
变量只能取定义时的离散值
枚举与#define区别
①#define宏常量只是简单的进行值得替换,枚举常量是真正意义上的常量
②#define宏常量无法被调试,枚举常量可以
③#define宏常量无类型信息,枚举常量是一种特定类型常量
19.typedef 用于给一个已经存在的数据类型命名
并没有定义新额类型
Typedef重定义的类型不能进行unsigned和signed扩展
Typedef与#define区别
Typedef是给已有的数据类型取别名
#define为简单的字符串替换,无别名的概念
相关文章推荐
- iOS学习笔记之-C语言基础02(关键字、标识符、注释、数据类型)
- 【C语言学习笔记】关键字:typedef、static和extern
- c语言学习笔记之const关键字(理解)
- C语言学习笔记 (一) C语言的关键字
- C语言学习笔记(一) 关键字
- C语言笔记之关键字(二)
- C语言笔记(关键字)
- <<C语言深度剖析>>学习笔记之一:C语言中32个关键字
- C语言复习笔记<1>——关键字的用法
- 【学习笔记】【C语言】关键字
- 我的小小学习笔记(2)之C语言——浅谈关键字 const,static,volatile(1)
- C语言笔记之const关键字
- C语言深度解析笔记1:关键字
- C语言学习笔记 逻辑结构关键字
- 【好程序员笔记分享】—— C语言中的extern关键字
- 【黑马程序员】C语言学习笔记之关键字、标识符、注释(三)
- C语言笔记之关键字(一)
- C语言之关键字
- c语言学习笔记八
- (08)Java学习笔记——面向对象02——关键字this static