c语言的一些关键字

来源:互联网 发布:fifa online3 mac下载 编辑:程序博客网 时间:2024/06/05 16:07

1.switch case

case后面只能是整型或者字符型的常量或者常量表达式,并且不要忘记了加default:

switch(b){case 3:cout<<"a="<<a<<"haha"<<endl;break;case 5:cout<<"yuanlai keyi "<<endl;default :break;}

switch case的引入是为了简化多层if else的,如果超过3层if else可以考虑使用switch case

2.return 关键字

return用于终止一个函数并返回其后面跟着的值,若果是表达式一般加上括号,规范性。但是return 不可以返回指向栈内存的指针,因为该指针在函数结束后被自动销毁了。

3.const关键字

const是constant的缩写,是恒定不变的意思。const的推出是为了取代预编译,消除它的缺点(浪费内存),继承它的优点(不可改变),提高效率

使用方法:const int Max = 100;

注意:const修饰变量时一定要在定义的时候同时初始化。

const 和#define的区别

1.const int Max = 100;

           #define PI 3.1415

使用#define时末尾没有;要看清楚

2.const更节省空间,避免不必要的内存分配,编译器通常不为普通的const变量分配存储空间,而是将他们保存在符号表中,这使得它成为一个编译期间的值,没有了存储于读内存的操作,因此效率更高。#define是宏替换,将PI位置替换为3.1415,每个位置都要替换,相对要浪费内存。

3.1 const修饰一般变量时:int const i = 2;和 const int i = 2;是一样的效果,因为const关键字会忽略类型标示符,所以想要判断const修饰到底是谁,可以将类型标示符去掉距离谁近就是修饰的谁。

3.2 const int *p ,int const *p,int *const p

按照3.1中的规则去掉int,剩余的部分为const *p,const *p,*const p,对于前两个表示的是p指向的对象不可以边,但p可以变。对于*const p ,p不可以边,但是指向的对象可以变。

3.3 修饰函数的参数

void Fun(const int i)表示在函数体中该参数不可变,防止恶意或者无意见修改i。

4.union 关键字

union与struct用法非常相似,只是struct里的数据成员是同时出现的,而union里同时间只能出现一个。

5.typedef关键字

typedef并不是定义了新的类型而是为一个已知类型定义一个别名 typedef int INT32;INT32 b = 12;这样使用。类似于引用int &a = b;以后a就是b的别名。同时也和const和#define也很类似。

6.malloc和calloc的区别

首先void * malloc(size_t,size)

        void * calloc(size_t numELement,size_t sizeOfElement)

参数不一样,malloc只有一个大小,而calloc则是元素个数和每个元素的大小。

其次calloc会初始化所分配的内存空间,初始化值为0.而malloc则不会。

7.迷途指针

迷途指针也叫悬浮指针、失控指针,来源于delete 一个指针后又使用了该指针。delete指针只是让这个指针不在指向原来指向的对象,但是指针本依然存在,于是还是可以使用的,所以如果这个时候用了该指针,由于这个时候该指针的指向位置不确定会产生不可预知的错误。解决方法是delete后一定要将该指针设为NULL或者指向一个常量。




0 0