编程语言
首页 > 编程语言> > C++基础——指针与引用

C++基础——指针与引用

作者:互联网

指针

作用:通过指针间接访问内存
语法:数据类型 * 变量名;
所占内存大小:一般32位系统4字节,64位系统8字节
eg:

int a = 10;
int * p = &a;

解引用:*P找到p指针指向的内存,即a

const修饰指针:

参数传递
1、值传递:普通的参数传递,形参不会影响实参
eg:

void swap(a, b) {
  int temp = a;
  a = b;
  b = a;  //a、b形参交换
}
int main() {
  int a = 1;
  int b = 1;
  swap(a, b); //此时a、b实参不会交换
  return 0;
}

2、地址传递:形参为指针,传递的是实参的地址,形参会影响实参
eg:

void swap(int * a, int * b) {
  int temp = a;
  a = b;
  b = a;  //a、b形参交换
}
int main() {
  int a = 1;
  int b = 1;
  swap(&a, &b); //此时a、b实参也会交换
  return 0;
}

注意数组传递的时候直接传数组名arr,接收也用数据类型 * 数组名,因为数组名本身就是首地址

引用

引用就是给变量起别名,本质是指针常量,引用必须要初始化,初始化后不可以改变
eg:

int a = 10;
int c = 20;
int &b = a;
b = c; //这里是赋值操作,不是修改引用,即a的值被修改成了c的值

引用传递
eg:

void swap(int &a, int &b){
  int temp = a;
  a = b;
  b = temp;
}
int main() {
  int a = 1;
  int b = 2;
  swap(a, b); //引用传递,形参会影响实参
  return 0;
}

总结:引用传递与地址传递的效果相同,但是引用传递语法简单。
注意:不要返回局部变量引用,除非是用static修饰的静态变量,函数返回静态变量的引用,此时函数调用可以作为左值。

常量引用
使用场景1:加上const后,编译器将代码自己补全,
eg:const int & ref = 10;//编译器修改:int temp = 10; const int & ref = temp;
加了const变为只读,不能修改值。
使用场景2:用来修饰形参,防止误操作
eg:

void printValue(const int &a){  //加const后不能对参数进行修改
  cout << a << endl;
}

int main() {
  int a = 10;
  printValue(a);
  return 0;
}

总结

引用本质上是指针常量,但是用法上更简单,与普通变量用法无异。
引用传递可以优化传递内存大小,尤其是实参数据量大时,要多采用引用传递;在不希望数据被改变时,多用常量引用。

标签:const,int,eg,C++,引用,实参,指针
来源: https://www.cnblogs.com/Stella77/p/16281478.html