一级指针及const与指针的结合

指针的定义:
指针是一个变量,用来存放地址的变量

指针的大小是固定的4/8个字节(32位平台/64位平台)

解引用:就是引用它指向的变量的值
int *p=&a,那么解引用就是:*p == a。
从内存来讲,系统为指针分配内存空间,而引用与绑定的的对象共享内存空间,系统不为引用变量分配内存空间。
指针初始化以后可以改变指向的对象,而引用定义的时候必须要初始化,且初值以后不允许再绑定对象。

指针的运算:
1.指针+或者-一个数,表示指针加减这个数的类型所占内存的整数倍
如 int *p=a;
p=p+2;

2.指针减去一个指针,表示两个指针之间所差的内存单元或者元素个数,两个指针相加没有意义

3.关系运算,如果定义了两个指针变量p和q,并且都已经初始化了,
如果p==q,则表示p和q指向同一个地址
p>q,则表示p指向高地址而q指向低地址
也经常拿p和NULL做比较,用来表示指针当前的状态

p1++是对地址进行加减整数

而(*p2)++, 我是定义了一个b变量,然后赋值给了10,然后把b的地址给了p2,*p2通过解引用得到的就是10,(*p)++ 相当于 10++ ,得到的就是11.

const与一级指针的结合
int a = 0;
int* p = &a;
*p = 1;
p = &b;

const int* q = &a;//q的指向的内容值不能做修改 q的指向为常变量
*q = 1;x
q = &b;√ //q是常变量 不能通过q修改元素

int* const s = &a;//s是常变量 不能企图修改s的值
*s = 1;√
s = &b;×

const int a = 1;
const int b = 2;

int* p = &a; //× 修改为const int* p = &a; 如果普通指针指向a,后面必然可以解引用p来改变a的值 ,但a是一个常变量无法修改
*p = 10;//×

const int *q = &a;//√
q = &b;//√

int const s = &a;// × const int s = &a;
s = &b;//×
*s = 20;//×

const int * const t = &a;//√
*t = 10;//×
t = &b;//×

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值