C++ 引用与指针

来源:互联网 发布:股票龙虎榜软件 编辑:程序博客网 时间:2024/06/14 17:36

C++学习笔记引用与指针

引用可以作为函数中其他变量的别名,

int count = 1;

int &cRef = count;

 

此时Ref 就是count的别名,对Ref的操作同样会改变count;引用参数应该是左值,而不能是常量或返回左值的表达式,并且引用生命是必须初始化,且一旦初始化就不能再次赋值

下面是在函数调用时引用的应用

void squareByReference(int & cRef)

{

  cRef *=cRef;

}

这样调用

int x =2;

squareByReference(x);


比较一下:函数参数定义时int &cRef 相当于引用定义时的左值,函数调用时传递的参数相当于引用定义的时的右值.

 

下面来说说指针和指针变量

int *countPtr,count;

这里我们可以说 我们声明了一个变量countPtr 其类型为int* 而countPtr int的指针.

这里可以看出指针变量与指针的区别: 指针变量直接包含特定值,而指针包含特定值变量的地址

&为去地址运算

int y = 5;

int *yPtr;

yPtr = &y;

这里*yPtr 指针变量的值为5,但指针yptr的值是特定值5所在的内存地址值

 

最好说说指针与引用的联系

int a = 1;

int &aRef = a;

int *pa = &a;

这是 aRef 和*pa的值都是1, pa的值是1的内存地址 *pa成为指针的复引用

如果是函数调用

 

void bre(int &aRef)

{

  aRef = 10;

}

void bp(int *pa)

{

  *pa = 10;

}

调用时也是一样的

第一个

bre(a)

第二个

bp(&a);

 

两个结果调用再输出a 其值都是10;

 

将指针传递给函数有四种方法:

非常量数据的非常量指针,常量数据的非常量指针,非常量数据的常量指针,常量数据的常量指针

 

非常量数据的非常量指针 指针和值都可以修改 这中指针可以用来接收函数的数组参数

常量数据的非常量指针 如const char * sptr  表示sptr是个字符常量的指针


非常量数据的常量指针 (例如:int *const ptr 表示指针地址不能改,但地址上的值可以改)总是指向相同的内存地址,该地址的数据可以用过指针修改,数组名是默认的,数组名是数组开头的常量指针,可以接收数组(名)为函数参数 常量数据的常量指针,顾名思义了.
0 0
原创粉丝点击