C/C++关键字整理复习

static关键字:

  • 函数体内的变量:1.生命周期延长:变量不随函数结束而结束,而是整个程序结束才结束;2.只声明一次;3.后续调用时,依然使用上一次的值;4.不会存储在栈上,而放在静态存储区。
  • 全局变量:改变该变量的链接属性,让变量有文件作用域,只能在该当前文件中使用。
  • 修饰函数:改变该函数的链接属性,只能在当前文件中使用。

extern关键字:

  • 一个c文件需要调用另一个c文件里的变量或者函数;
  • 如果不想让其他文件引用本文件中的变量,加上static即可。

const关键字:

  • 定义变量为常量,后续不可以修改;
  • 修饰参数的时候,传入的参数不可修改;
  • 定义指针:1、常量指针:指针的指向可以修改,指针指向的值不可以修改;
                      const int *p = &a;   
                      2、指针常量:指针的指向不能修改,指针指向的值可以修改。
                      int * const p = &a;   

sizeof 和 strlen关键字:

  • sizeof是一个运算符关键字,而strlen是一个库函数;
  • sizeof可以用类型,函数作为参数;但是strlen是用来计算字符串的长度,不包括末尾的结束符
  • sizeof编译的时候计算,strlen是运行的时候计算。

typedef和define关键字:

  • 都是替对象取一个别名,增强程序的可读性。
  • define为预处理的指令,不做正确性检查,只有带入后才能发现,没有作用域限制
  • typedef用来定义类型别名,方便记忆。

#define 和 const关键字:

  • define指示简单的文本替换,生命周期止于编译器,不分配内存空间,存在于代码段;const常量存在于数据段,堆栈中分配了空间;
  • const有数据类型,编译器可以对const进行安全检查;
  • const可以保护常量不被修改的作用,提高程序的健壮性。

struct 和 union关键字:

  • struct结构体是一种数据类型,能把不同的自定义数据类型组合成一个整体;
  • union共用体(联合体)是把几个不同类型的变量共同占用一段内存。
  • 在任何同一时刻,union中只存放了一个被选中的成员,而struct的所有成员都存在。
  • 在struct中,各成员都占有自己的内存空间,它们是同时存在的,一个struct变量的总长度等于所有成员长度之和,遵从字节对其原则;在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在,Union变量的长度等于最长的成员的长度。
  • 对于union的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,所以,共同体变量中起作用的成员是最后一次存放的成员;而对于struct的不同成员赋值是互不影响的。

new/delete 和 malloc/free关键字:

  • malloc / free是C语言中的库函数,new / delete是C++中的操作符;
  • new 自动计算所需分配内存;malloc 需要手动计算所需分配内存;
  • new 返回值是对象类型的指针;malloc 返回的是void*,需要转换为所需类型;
  • delete 释放内存时需要对象类型的指针;free是void*类型指针;
  • new 分配失败会抛出异常;malloc 分配失败会返回NULL;
  • new 是在自由存储区上分配内存;malloc 在堆上分配内存;
  • new 先调用 operator new,申请足够的内存,然后调用该类型的构造函数,初始化成员变量,最后返回对象类型指针;delete先调用析构函数,调用 operator delete函数释放内存。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值