关于C++与C
2015-04-01 本文已影响206人
GodsLeft
- C语言是C++的基础,要能够明确的区分C与C++的内容
- C语言中的结构体,const,运算符重载,
int *x
与int* x
的区别 - C++面向对象要从头再学习了
C++
- 函数之间的参数传递都是按值传递的
- 内联函数:在编译的时候将函数体直接插入到函数调用处,避免函数调用时保存和恢复现场。不能包含复杂的控制语句。
- 关于程序的内存区问题,在学完51单片机之后终于彻底理解了。
1.全局/静态存储区及常量存储区,在编译时已经分配完毕
2.栈区
3.堆区 - 静态全局变量对于同一个源文件中的函数是可以访问的。
- 静态局部变量离开函数值仍保留,但不能够为其他函数引用
- 引用是C++中新的概念
- 程序中定义的变量在编译时被分配了内存空间,变量名也就成了相应的内存空间名称,在程序中使用名字访问该内存空间。这种按变量地址存取变量值的方式也叫做“直接访问”方式。
- 关于
int *x
和int* x
。实际上int *x,y
和int* x,y
就能够体现那个好一点。实际上我更倾向后一种写法,虽然在这种情况下会造成混淆。但是我觉得在函数原型中使用int fun(int* x,int* y)
这样较好。 - a[i]在编译时处理成*(a+i)
-
int (*p)[4]
与int *p[4]
的区别:前者表示p是一个指向4个int的指针,后者是一个指针数组 - 编译器对于字符串常量的处理,遇到字符串常量时,编译器将其放到内存data区的const区中,字符常量就变成了地址。
- 每一个函数都占用一段内存单元,他们有一个起始地址
-
p=new int[20]
与int a[20]
是不同的,前者是在程序运行时分配内存,而后者应当是在编译期就分配空间