学习问题

引用与指针

1.    引用数组: Int a[10]={0}; int (&cp)[10]=a;//此句代表cp是数组a的别名,是同一块内存空间(a当右值运算时,可以是数组首元素的地址,在引用时,代表整个数组空间)//Int&cp[10]  , 无二级引用

2.    返回临时变量(内置类型)存在内部寄存器中(EAX),自定义类型存在内存中。

3.     临时变量不可进行自增;除非为返回引用。

4.     返回的引用要求: 变量为全局变量; 变量为静态变量; 该变量是以引用进,以引用出;

5.    自定义函数分配在同一块栈帧空间;

6. 引用返回的是变量的地址,存在内部寄存器中,然后通过地址找到该变量的位置;

7.   Int&a=======int * const a;

8 .引用二维数组和一维数组

void fun1(int br[10])//error C2664: 'fun1' : cannot convert parameter 1 from 'int [5][10]' to 'int []' {  cout<<sizeof(br)<<endl; }

void fun2(int **br)// error C2664: 'fun2' : cannot convert parameter 1 from 'int [5][10]' to 'int ** '  {  cout<<sizeof(br)<<endl; }

void fun3(int (*br)[10]) {  cout<<sizeof(br)<<endl; } void fun4(int br[][10])//退化为数组指针等同于int (*br)[10] {  cout<<sizeof(br)<<endl; } void fun5(int (&br)[5][10])//必须明确引用对象的大小 {  cout<<sizeof(br)<<endl; } void fun6(double&br)//引用变量 {  cout<<sizeof(br)<<endl; } void fun7(int (&br])//引用一维数组 {  cout<<sizeof(br)<<endl; }

9.  内置类型: const int a=10; const int &b=a;(编译器处理成Int temp =a; const int &b=temp)  ,相反,自定义类型 const test t(10); const test &y=t(y是t的别名,中间没有创建临时对象,test &u=t(错误)

10. const & a=12.23(无类型的引用默认为整型int)

11. 拷贝构造函数的参数必须为对象的引用(即 point(const point &p) )  若把一个真实的对象作为参数传递引起无穷递归。

12. 类的普通成员不可初始化,静态成员在类外必须初始化,因为它不属于某个对象。

13.  函数编译,先创建全局变量及对象,在创建主函数对象。

14.  namespace   XXXX{}自定义命名空间,默认为std空间。访某个空间,或者某个对象加作用域分辨符::  访问全局变量(::max)

15.   struct StrNode
{
 int ref;
 int len;
 char data[];//柔性数组 
};   sizeof(StrNode)=sizeof(int)+sizeof(int)

原文地址:https://www.cnblogs.com/lirong21/p/3908549.html