c语言笔记1-关键字



1.数据类型:固定内存大小的别名,创建变量的模子。

例:char1byte的别名;short2byte的别名;int4byte的别名

2.变量:一段实际联系存储空间的别名。程序中通过变量来申请并命名存储空间。通过变量名可以使用存储空间。

3.typedef:自定义数据类型。不是创造新的数据类型,只是给现有的数据类型重新命名。

例:typedef  int  INT32;//sizeofINT32= sizeofint=4

typedef unsigned char BYTE//sizeofBYTE=sizeofunsigned 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;//pp指向的内容不可变

总结:左数右指

      const 出现在*号左边时指向的数据为常量

const 出现在*号右边时指针本身为常量

15.volatile 编译器警告指示字

         用于告诉编译器必须每次去内存中取变量值

         主要修饰可能被多个线程访问的变量

        也可修饰可能被未知因素更改的变量

16.柔性数组:大小待定的数组

C语言结构体的最后一个元素可以是大小未知的数组 ,用结构体产生柔性数组

Typedef struct  _soft_array

{

   Intlen;

   Intarray[];

}softArray;

17.structunion

  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重定义的类型不能进行unsignedsigned扩展

Typedef#define区别

Typedef是给已有的数据类型取别名

#define为简单的字符串替换,无别名的概念

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值