指针与引用
指针定义
指针,其实就是存储一个变量的地址的变量。
怎样理解地址呢?
存储一个变量,我们得先腾出空间来储存他,而这个变量占用的空间就是这个变量的地址,指针一般取第一个地址。
知道了指针变量,我们得知道他怎么定义。如下:
类型 *名字;
例:
int b,*p=&a;
前面的类型取决于这个指针他存储的地址的"主人"是什么类型
有的会把int和星号放在一起,如果你只定义一个指针没问题,但是你想定义多个指针,后面的还是得单独加星号int* a,*b
这也意味着定义指针的int也可以定义变量
这里我们要了解一下*号和&号
*&
很常见的,*可以做乘号用,比如:c=a*b;
两个&可以做and用,比如:a&&b
而一个&,做运算符时可以做与运算,这个就涉及进制了下一期讲
一个&还有什么用呢?就是取地址,在变量前面加&,可以知道他的地址是什么,好用指针存地址。
另外,一个&还可以引用,之后讲
*还有分定义时和平常时,定义时前面加 *就是说这个变量是指针
平常时加 *表示解地址,与&是恰恰相反的,在指针前面加 *,可以知道地址所存的变量
引用
一般指针用不了太多,这里介绍一些操作
int a=10;
int *p=&a;
*p+=5;
cout<<a;//cout<<*p;
这个程序会输出15,因为解地址符把P的地址解了,此时*p就可以看做a了,a+5=15
对了,言归正传,说一下引用
引用和指针有异曲同工之妙,说白了引用可以理解成*变量
,自带 *的指针
定义:
类型 &名字;
例:
int b,&q=a;
引用就是给引用的变量取小号,&q=a,q就可以看做a了,多用于函数参数传递
指针也可以用于函数
#include<cstdio>//C语言原生输入输出头文件
using namespace std;
//指针
void pad(int *a,const int d){
*a+=d;
}
//引用
void quad(int &a,const int d){
a+=d;
}
int main(){
int a=5;
printf("%d %d",pad(&a,5),quad(a,10));
return 0;
}
//const表示常量,const int就是整数常量类型,常量是不可以赋值的
//所以常量变量就是不可以变动的变量
顺便还讲了const awa
通过对比可以看出,两个函数的内容唯一差别就是
带星号和不带星号
传值时带&号和不带&号