1、使用引用时,引用的底层也是用指针实现的,地址和原参数相同
· 引用做函数参数:可以减小复制的开销,提升效率
引用一般是传入传出参数,可能会被修改,注意使用const 限制参数
引用如果作为函数的返回值,返回值的生命周期一定大于函数
例: void fun(const int & refer)
struct Mystruct
{
long original;
long & refer;
};
void test()
{
cout << "sizeof(Mystruct)" << sizeof(Mystruct)<< endl;
//此处输出结果为16,因为struct 结构中有两个参数,各占8个字节(指针大小也是八个字节)
}
2、c++内存布局
进程一般访问的事虚拟地址空间,其中内核态占1G,用户态占用3G
1、代码中数据在内存中的位置
其中需要主要以的点 ,char*类型的字符串所在位置。使用const修饰的数据,一般存在于文字常量区,不能进行修改(point to const)。一般的 全局变量/static 修饰 的数据,其生命周期大于函数,存在与全局/静态区。指针一般在栈区上。
//此语句字符串在文字常量区,且文字常量的不能进行修改
char * pstr = "hello nidaye";
//不能修改*P的值,防止被修改可以在char 前加上const (point 同const)
//而下方语句 数组 则处于 栈区
char pstr[] = "hello world";
///后续有时间继续补充