面试总结之关键字

1.ststic:

    (1).修饰函数,只能在声明他的源文件中使用;在大型项目中,防止不同文件中函数重名时使用。

    (2).修饰存储类型使之成为静态存储类型,(修饰后的变量存储在数据段,初值为0)分为两种:

       a.修饰全局变量:改变函数作用域,只能在本文件中使用;何时使用:同函数;

       b.修饰局部变量:改变生命周期,函数调用结束不再释放,整个程序运行结束释放(局部变量存储在栈空间,static修饰后存储在数据段的静态数据区);何时使用:程序应该尽量少得使用全局变量(安全性),需要时用static修饰局部变量替代;另外在统计时也会使用到;

2.const

  (1).修饰只读变量,一般在传参时使用,修饰函数形参,保证变量在函数中不被修改;

  (2),const 修饰的是变量名,不是内存空间。故不可通过变量名修改变量的值,但是可以通过地址修改(所以const修饰的变量的说法错误);

  (3).例:const int num=5;   

         a.num++;编译出错;

         b.  int *p=#     mun++;     //此时num值被修改为6;

  (4).const为就近原则:

const int *p不变*p不变,即内容不变,但是p的指向可以变有const int *p=# 则p++;(对)    (*p)++;(错)    num++;(错)      
int const *p*p不变 
int * const pp不变,指向不变,但内容(*p)可变 
const int *const pp和*p都不变,内容和指向都不变 

   

3.typedef:

   (1).给数据类型重命名:

   (2).提高程序可移植性,可读性,和开发效率

        a.切换平台时,减少不同平台有符号数和无符号数切换带来的问题;减少代码修改量,只需修改typedef语句;

        b.隐式表明参数类型:typedef  unsigned int Size_t;      int func(Size_t a,Size_t b)

 

4.extern

  (1).作外部声明;(不分配内存空间,extern不是语法,是一种规范),优化编译速度

     a.函数内部声明:

int func()
{
    extern int num;//函数内部声明
}

....
int num;      //num为全局变量
//此种情况一般将全局变量放在程序顶部,避免声明

       b.在其他文件中声明

   (2).声明函数

5.register

  (1).修饰变量,将变量尽可能地保存在CPU内部寄存器中;(尽可能:寄存器为稀缺资源,不够使用)

  (2).省去CPU从内存中获取数据的时间,提高程序运行效率;

  (3).何时使用:循环变量或频繁被访问的变量;

  (4).注意点: 不能取地址操作;不能修饰全局变量(相当于私有化寄存器);不能修饰函数;修饰的变量必须为CPU接受的数据类型(有的CPU不支持float型);

6.volatile(与硬件相关)

  (1).防止编译器内部将变量自动优化到寄存器中;例:

int i=100;
while(i>0)
{
  .....
}     //条件永远成立,很多很多次后,编译器默认该值不变,编译自动优化,将值移入寄存器
//带来后果:若之后i的值修改,编译器中值不变,编译出错

     extern防止这种优化

  (2).一般在裸机时候使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值