C语言指针、引用

**p是一个指向指针的指针,它指向一个指针变量,而*p是一个指向某个变量的指针。因此,(**p)++会改变指针变量的值,而(*p)++只会改变指针指向的变量的值。

*p+1表示指针p指向的变量的地址加1;(*p)+1表示指针p指向的变量的值加1;(**p)+1表示指针p指向的指针变量的值加1;*(*p)+1表示指针p指向的指针变量指向的变量的值加1。*(*p+1)表示指针p指向的变量的地址加1后指向的变量的值。

**p+1表示指针p指向的变量的地址加上1,即指向下一个变量的地址,而*p+1表示指针p指向的变量的值加上1,即指向下一个变量的值。

*p++表示先取出指针p指向的变量的值,然后指针p指向下一个变量;而++*p表示先将指针p指向的变量的值加1,然后取出指针p指向的变量的值,不改变p指向的地址。

int a;
表示一个内存空间,这个空间用来存放一个整数(int);
int* a;
表示一个内存空间,这个空间用来存放一个指针,
这个指针指向一个存放整数的空间,即a)中提到的空间;
int** a;
表示一个内存空间,这个空间用来存放一个指针,
这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。
简单的说,指向了一个b)中提到的空间;
int (*a)[4];
表示一个内存空间,这个空间用来存放一个指针,
这个指针指向一个长度为4、类型为int的数组;
和int** a的区别在于,+++=1之后的结果不一样,其他用法基本相同。
以上四种类型见上图表示。
int (*a)(int);
表示一个内存空间,这个空间用来存放一个指针,
这个指针指向一个函数,这个函数有一个类型为int的参数,并且函数的返回类型也是int
int i;
int *a = &i;		//这里a是一个指针,它指向变量i 
int &b = i;		    //这里b是一个引用,它是变量i的引用(别名)
int * &c = a;		//这里c是一个引用,它是指针a的引用
int **d = a; 		//d是一个指向指针a的指针;
int** &e= d; 		//e是一个引用,他是指向指针a的指针的引用
int & *d;	        //这里d是一个指针,它指向引用,但引用不是实体,所以这是错误的
int *p[]			//指针数组
int (*p)[]		//指向数组的指针
int &a; //只声明而不初始化是错误的,因为引用就是一个别名,
//如果不指明它是谁的别名,则会报错
//引用必须初始化,引用初始化就是将引用绑定到一个变量上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

之墨_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值