面试题
::来直接操作全局变量
(自定义数据类型)++i可以返回对象的引用 i++必须返回对象的值导致在大对象的时候 产生较大的复制开销
低类型转为高类型
右边的自动转换为左边的
实参转化为形参
返回值 转换为函数类型,
有符号+无符号 自动转化为无符号类型
main函数代表进程的主线程. 操作系统调用运行期启动函数,改函数对运行期库初始化---->exit() 会调用exitprocess()函数,结束进程
atexit() 注册程序正常退出是要被调用的函数
int atexit(void(*)(void)) 先注册后调用 后注册先调用
#program 布局控制器
编译器可以对const常量进行类型安全检查
const 作用:定义常量 修饰形参 修饰函数 修饰成员函数
char str[] = "Hello"
sizeof(str) = strlen(str)+1 = 6
继承空类的空类大小为1
静态变量在静态存储区不属于类的实例中
sizeof 在编译时已经计算过了
不能用于计算字符串的长度
sizeof(str) 获取的是一个字符指针的大小
要考虑字节对齐:
inline 解决用红定义的一些缺点
解决程序中函数调用效率的问题
#define预处理中符号的简单替换 不能进行一系列的检测
函数代码在使用时直接进行替换 没有了调用的开销 效率提高
编译时进行了一系列的类型检查 可以作为类的成员函数
类的接口函数
内敛的缺点:
一代码膨胀膨胀为代价,省区了调用式的开销,提高了执行效率,但是提高代码量
内敛函数不能出现函数的声明中
5.指针变量的引用:
int *p = &a;
int* &pa = p; pa--->p 的引用
pa = &b; === p= &b;
swap(char*&x,char *&y); 声明 指针的引用
swap(char* x,char* y);函数栈会分配两个临时的指针变量分别执向两个指针参数
参数的引用:
不能通过const 引用修改变量的值
int (*a[10])(int)
int(*func)(int* p,int(*f)(int*));指向函数的指针
int a[5] ={1,2,34,5};
int *ptr = (int*)(&a+1);
*(ptr-1) == a[3]
char const* = const char* 指针指向常量
*const 指针是常量
指针函数 是返回类型尾指针 int* fun(int,int)
函数指针 指向函数的指针 int (*fun)(int,int)
指向函数的指针数组 int (*arr[10])(int)