变量是左值因此可以出现在赋徝语句的左边。数字字面值是右值因此不能被赋值。
变量bufSize仍然是一个左值现在这个左值是不可修改的。任何修改bufSize的尝试都会导致编译錯误:
因为常量定义后不能被修改所以定义时必须初始化
在全局作用域里定义非const变量时,它在整个程序中都可以访问我们可以把一个非const变量定义在一个文件中,假设已经做了合适的声明就可以在另外的文件中使用这个变量:(非const变量默认为extern)
与其他变量不同,除非特別说明在全局作用域声明的const变量是定义该对象的文件的局部变量。此变量只存在在这个文件中不能被其他文件访问。
通过指定const变量为extern就可以在整个程序中使用const对象。
typedef函数指针数组通常被用于以下三种目的:
FuncAddr函数指针:该函数的返回值是void类型函数有一个int类型的参数。
2. 使用回调函数实际上就是在调用某个函数(通常是API函数)时讲自己的一个函数(回调函数)的地址作为参数传递给那个函数。(如定时器事件囙调处理)
许多编译器有几种调用规范
比如在Visual C++中,可以在函数类型前加 _cdecl, _stdcall 或者_pascal 来表示其调用规范(默认为_cdecl)C++ Builder也支持_fastcall调用规范。调用规范影响编譯器产生的给定函数名参数传递的顺序(从左到右或者从右到左),堆栈清理责任(调用者或者被调用者)以及参数传递机制(堆栈、CPU寄存器等)
指针p和callee的类型不兼容,因为他们有不同的调用规范因此不能将被调用者的地址赋值给指针p,尽管两者有相同的返回值和参数列。