C/C++的指针类型

形式含义
int *pp是一个向int类型变量的指针
const int *pp是一个常量指针,即指向常量的指针,其指向可以发生改变,但其指向的内容不能改变
int const *p等价于const int *p,p是一个常量指针,即指向常量的指针,其指向可以发生改变,但其指向的内容不能改变
int * const pp是一个指针常量,即指针的常量,其指向不能发生改变,但是其指向的内容可以发生改变
const int * const pp是一个指针(不知道叫啥指针),指针的指向和指向的内存都不能发生变更
int arr[5]arr是一个一维数组,arr实际上也是一个指针常量,其指向不可变,同时&arr是一个指向长度为5个元素的数组的指针,偏移量是4∗54 * 545个字节。也就是说,如果对数组名取地址,取出来的内容和arr一致(它们都是同一个地址),但是含义不同,&arr取出来的地址指向的是一个数组对象,而arr所代表的地址指向的是一个数组元素
int *p[5]p是一个一维数组,该数组含有5个int类型的指针
int (*p)[5]p是指向一个长度为五个元素的数组的指针,p+1实际上的偏移量是4∗54 * 545个字节
int (*(*p)(int, int))(int)p是一个函数指针(中间的(*p)(int, int)),该函数的有两个int类型都形参,并且返回一个函数指针(该函数有一个形参且返回int)
int arr[4][5]arr是一个二维数组,但不是二级指针,arr[0]相当于是一个指向长度为5个元素的数组的指针,即int (*p)[5],因此,arr可以作为实参传入形参为int (*p)[5]的函数
int **pp是一个二级指针,其指向的是一个指向类型变量的指针(*p),多级指针的概念类似,按声明处的*个数来判断是几级指针

int *f();或者int *f(),w[10],c;,这是在声明一个返回指向整型的指针的函数f,而并非定义指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值