c++-笔记一

一.总结本章的内容:

1.如果声明指针是void* ,它意味着任何类型的地址都可以间接引用那个指针(而如果声明int,则只能对int型变量的地址间接引用那个指针)。一旦我们间接引用一个void,就会丢失关于类型的信息。这意味着在使用前,必须转换为正确的类型。

2.Static变量使得局部变量的值在程序的整个生命期里仍然存在,其优点是在函数范围之外它是不可用的,所以不可能被轻易改变。

3.内部链接意味着只对正在编译的文件创建空间,外部连接意味着所有被编译过的文件创建一片单独的存储空间。

4.显示转换语法:

(1).static_cast:用于“良性”和“适度良性”转换,包括不用强制转换(例如自动类型转换);

(2).const_cast:对“const”和/或“volatile”进行转换;

(3).reinterpret_cast:转换为完全不同的意思。为了安全使用它,关键必须转换回原来的类型。转换成的类型一般只能用于位操作,否则就是为了其他隐秘的目的。这是所有转换中最危险的。

(4).dynamic_cast:用于类型安全的向下转换。

5.asm关键字:是一种转义机制,允许在C++程序中写汇编代码。在汇编程序代码中经常可以引用C++的变量,这意味着可以方便的和C++代码通信,且限定汇编代码只能用于必要的高效调整,或使用特殊的处理器指令。

6.想给程序传递命令行参数时,C和C++的函数main()有特殊的参数表,其形式如:int main(int argc, char* argv[]); argv[0]是程序本身的路径和名字。

7.复杂变量和函数定义:

(1).void *(*(*fp1)(int))[10]; *fp1是一个指向函数的指针,该函数接受一个整型参数并返回一个指向含有10个void指针数组的指针。 (2).float (*(*fp2)(int,int,float))(int); *fp2是一个指向函数的指针,该函数接收三个参数(int、int和float)且返回一个指向函数的指针,该函数接受一个整型参数并返回一个float。 (3).typedef double (*(*(fp3)())[10])(); fp3是一个指向函数的指针,该函数无参数,且返回一个含有10个指向函数指针数组的指针,这些函数不接受参数且返回double值。
(4).int (*(*f4())[10])(); f4是一个返回指针的函数,该指针指向含有10个函数指针的数组,这些函数返回整型值。

  • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
  • Copyrights © 2015-2021 翟天野

请我喝杯咖啡吧~