cphp数据 cp数据是什么( 二 )


下面的声明都是什么意思?
const int a; a是一个正常整型数
int const a; a是一个正常整型数
const int *a; a是一个指向常整型数的指针 , 整型数是不可修改的,但指针可以
int * const a; a为指向整型数的常指针 , 指针指向的整型数可以修改,但指针是不可修改的
int const * a const; a是一个指向常整型数的常指针,指针指向的整型数是不可修改的,同时指针也是不可修改的
通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码 。合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数 , 防止其被无意的代码修改 。简而言之,这样可以减少bug的出现 。
Const如何做到只读?
这些在编译期间完成 , 对于内置类型,如int, 编译器可能使用常数直接替换掉对此变量的引用 。而对于结构体不一定 。
2再说说static的用法(三个明显的作用一定要答出来)
1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变 。
2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问 。它是一个本地的全局变量 。
3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用 。那就是,这个函数被限制在声明它的模块的本地范围内使用
4)类内的static成员变量属于整个类所拥有 , 不能在类内进行定义 , 只能在类的作用域内进行定义
5)类内的static成员函数属于整个类所拥有,不能包含this指针,只能调用static成员函数
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
static全局变量与普通的全局变量有什么区别:static全局变量只初始化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
4.extern c 作用
告诉编译器该段代码以C语言进行编译 。
5.指针和引用的区别
1)引用是直接访问,指针是间接访问 。
2)引用是变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间
3)引用绑定内存空间(必须赋初值),是一个变量别名不能更改绑定,可以改变对象的值 。
总的来说:引用既具有指针的效率,又具有变量使用的方便性和直观性
6. 关于静态内存分配和动态内存分配的区别及过程
1) 静态内存分配是在编译时完成的,不占用CPU资源;动态分配内存运行时完成,分配与释放需要占用CPU资源;
2)静态内存分配是在栈上分配的,动态内存是堆上分配的;
3)动态内存分配需要指针或引用数据类型的支持 , 而静态内存分配不需要;
4)静态内存分配是按计划分配,在编译前确定内存块的大小,动态内存分配运行时按需分配 。
5)静态分配内存是把内存的控制权交给了编译器,动态内存把内存的控制权交给了程序员;
6)静态分配内存的运行效率要比动态分配内存的效率要高 , 因为动态内存分配与释放需要额外的开销;动态内存管理水平严重依赖于程序员的水平,处理不当容易造成内存泄漏 。
7. 头文件中的 ifndef/define/endif 干什么用?
预处理 , 防止头文件被重复使用 , 包括pragma once都是这样的

推荐阅读