指针的应用,加减,const,void,数组指针,指针数组

指针与整数相加减:
int age[8] = {…};
int *p = &age;数组的本质上就是一个地址,第一个元素的地址就是数组的地址
p = p + 2;
cout << *p; 输出为数组的第三个元素
(指针加减会在数组中左右移动 n 个位置,但地址会变化 n x sizeof ( type ) 个地址:p = p + n --> p原地址 + n x sizeof ( type ) )

int *p = &age[6];
p = p - 2;
cout << *p; 输出为数组的第五个元素,即倒数第四个元素

指针与指针相加减:
int *p1 = age[5];
int *p2 = age[3];
p1 - p2 = 2;
p2 - p1 = -2;

指针与指针相加没有意义。
指针与指针相减必须是在同一个数组中,如果不在同一个数组中,那么相减就没有意义,但也会得到一个值,这个值就是两个地址相减的值,是没有意义的。

const 指针:
int const *p; 指针 p 可以指向其他变量,但不能修改变量的值
int *const p; 指针 p 可以修改变量的值,但不能指向其他变量

void 指针:
int arr[ ] = {1,2,3,4,5};
char ch = ‘a’;
void *p = arr; //定义了一个void 类型的指针
//p++; //不可以, void
指针不允许进行算术运算
p = &ch; //其它类型可以自动转换成void
指针
//printf (“数组第一个元素:%d \n”,*p); //不可以进行访问

void 类型的指针,没有初始的类型,但可以初始化指向,在进行访问时,需要确定的指定它的类型才能进行访问。

数组指针:
指向的是数组中的元素

定义一个数组指针,这个数组里面的每一个元素都是一个指针变量,每一个指针变量都可以指向其他数组的每一个元素的地址。
int age[3] = {…};
int *p[2]; 数组指针
p[0] = &age[0]; 或者 p[0] = &age[1]; 或者 p[0] = &age[2];
p[1] = &age[1]; 或者 p[1] = &age[2]; 或者 p[1] = &age[0];

指针数组:
指向的是二维数组的一整个一维数组

定义一个指针数组,这个数组里面的每一个元素都是一个指针变量,每一个指针变量都可以指向其他数组的每一个元素的地址。
int age[3][4] = {
{11,12,13,14},
{21,22,23,24},
{31,32,33,34}};
int (*p)[4]; 数组指针
p = &age[0]
此时的数组指针指向二维数组中的 age[0] = {11,12,13,14} 这一整个数组。

记录一下,以免忘记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值