指针

指针是一种数据类型, 指针占据的内存大小取决于计算机, 指针保存的是内存地址
在创建指针时, 如果暂时用不到, 应该指向NULL
释放指针后, 应该指向NULL, 防止产生野指针
*p解引用, 操作p所指向的内存空间
&p获得p的地址

*

  • * 在声明的时候声明变量为指针
  • * 在使用的时候为操作指针所指向的内存空间

野指针\空指针\万能指针

野: 指向未知内存的指针
空: 指向NULL的指针
万: void *p; 可以指向任意变量的内存空间

const 修饰指针变量

const int* p; 不能通过p间接改变内存空间的值
int* const p: 不能修改p的指向

指针的步长

指针的步长由指针所指向的内存空间所决定
如果指向int 那么指针+1 就是移动4个字节
如果指向double 那么指针+1 就是移动8个字节

指针传递

如果定义了一个指针int *p =&a; 实参传递p,
形参如果是*p2,则p2接受的是p所存放的内存空间地址

如果对p2赋值, 修改的是p2自己的内存空间, p指向的内存空间没有改变
如果对*p2赋值, 修改的是p所指向内存空间存放的内容

如果想修改实参p的指向, 应该传递&p, 形参应该是**p2, 则p2接受的是p的内存地址

如果对p2赋值, 修改的是p2自己的内存空间, p指向的内存空间没有改变
如果对*p2赋值, 修改的是p2指向的内存空间, 也就是p的内存空间, p的内存空间所存放的内容会被改变
如果对**p2赋值, 修改的是p2指向的内存空间所指向的内存空间, 修改的是p所指向内存空间存放的内容

用1级指针形参,去间接修改了0级指针(实参)的值。
用2级指针形参,去间接修改了1级指针(实参)的值。
用3级指针形参,去间接修改了2级指针(实参)的值。
用n级指针形参,去间接修改了n-1级指针(实参)的值。

void test(){
	int b;  
	int *q = &b; //0级指针
	int **t = &q;
	int ***m = &t;
}

指针数组

数组的每个元素都是指针类型
char *a[] = { “aaaaaaa”, “bbbbbbbbbb”, “ccccccc” };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值