- 深入了解数组名和指针的区别
- 常量与变量
- 什么是常量
- 引用
- New和Delete
- c和c++本质区别
数组名是一个常量
而指针是一个变量
int arr[] = {1,2,3,4,5,6};
cout << arr << endl;
用汇编语言理解
lea计算计算机内存地址,并且将地址赋值给eax中
由此可见,数组名的显示了地址
int* p = arr; cout << *p <常量与变量
当进行到指针的时候,会先进行一次解引用,先引用p地址所指向的内容放入eax中在刚刚的数组名和指针的例子显示出常量和变量的区别,
当用常量赋值int a = 10;编译器会直接变量赋值
当用变量赋值
int b = a ;会先解引用变量的值,赋值给eax中,再将eax赋值给b
什么是常量常量:是不能修改的左值,是用const修饰的变量
特点:在编译时期系统会将定义的常量替换,替换成数值。
(因此在定义常变量的时候需要先进行赋值)定义常变量的方法
const int * p= &a ;其中第一行第二行表达相同的意思 int const * p= &a ;创建一个整形常量类型的指针(指针所指向的为常量) int * const p= &a ;创建一个整形指针常量的p(p为常量)const定义规则,const左右第一个类型为其修饰的类型。
除此之外
const有时候无法重载int fun (int a ); int fun ( const int a);此时函数不可以发生重载若const修饰的是指针则可以发生重载
int fun (int * p); int fun (const int *p);引用引用的本质:引用的底层是个指针,在使用到引用的地方,系统会在编译期自动替换成底层指针的解引用。
因此引用的时候需要地址int fun() return 10; const int & e = fun();此时fun返回的是一个临时量,由于临时量具有常属性,因此引用需要加const
New和Delete
这个时候的引用叫常引用new在c++中申请空间,类似于c语言的malloc
new 类型[个数] new int[5];delete在c++中摧毁空间,类似于c语言中的free
delete[]变量名 delete[]arr;c和c++本质区别c语言是一个面向过程的语言
c++是一个面向对象的语言//具有封装性



