C++ 文件到生成exe文件需要经过预处理、编译、汇编和链接几个步骤。
- 预处理:在预处理阶段,编译器主要作加载头文件、宏替换、条件编译的作用。
- 编译:在编译过程中,编译器主要作语法检查和词法分析。可以通过使用 -S选项来进行查看,该选项预处理之后的结果翻译成汇编代码。
- 汇编:在汇编过程中,编译器把汇编代码转化为机器代码。
- 链接:链接就是将目标文件、启动代码、库文件链接成可执行文件的过程。
内置类型数据在传入函数时,使用值传递方式的效率要高于引用传递和指针传递,因此编译器会采用效率最高的方式来实现参数传递,当然也允许用户更改,事实上包括STL中的迭代器和函数对象也都是默认采用值传递的方式来实现的。
Leetcode有一题在递归中传递了int&,还是使用全局变量比较好。
至于其他类型如自定义类,如果采用值传递则会涉及拷贝构造函数和析构函数的调用问题,通常会影响性能,所以一般采用引用和指针传递的形式,通常交由用户决定。
3 extern在C语言中,修饰符extern用在变量或者函数的声明前,用来说明**“此变量/函数是在别处定义的,要在此处引用”。**
4 int arr[5]={1,2,3,4,5}; 则 * ( * (&arr+1)-1)&arr 的类型是 int (*)[5]。
&arr + 1表示跳过了整个数组,即20个字节,指向最后一个元素的下一个地址。
*(&arr + 1) - 1指向元素5
* ( * (&arr+1)-1) == 5.
6中结构体定义方式
①注意定义结构体sum1时要加上struct。
struct data { char aa; char bb; char cc; int dd; }; struct data sum1, sum2;
②用typedef的方式更简便。
typedef struct { char aa; char bb; char cc; int dd; }DATA; DATA sum3;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)