一级指针简单理解

一级指针简单理解

两个关键符号:

& : 取内存地址符
* : 取内存值符

指针的操作规律:
1.声明的时候是往里放地址 int *p = &num,  
2.直接拿的时候就是直接操作地址内的值 *p = 10;

在 C 中操作地址就可以操作值,就跟 java 中两个引用类型拿到引用可以操作内一个对象一样。

变量名    内存地址       值  
a        [0x23fa32]   100  
*p       [0x24aa34]   [0x23fa32]        //这里是a的内存地址

指针存放的是 a 的内存地址,&p则是自己的内存地址 [0x24aa34]

1.创建一个针指并使用
void main() {
    int num = 100;
    int *p = #      //将内存地址给 *p
    printf("%x, %x",&num, &p);
    *p = 10;
    printf("%d", num);  //10
}

分析过程:
根据拿到的直址 分别查看 &num,和 &p。&num 的地址以 带符号 4字节查看是100。
查看&p 的地址,以十六进制查看,因为存的是 &num 的地址。并不是实际的值。这就证明了指针变量存的是地址。
当程序再往下走 *p = 10 时,再回头看 &num 的值,已经变红,修改成了10。

2.传递指针
void main() {
    int num = 100;
    change(&num);   //形参是指针类型,就可以将地址传递过去。
}

void change(int *p) {       //创建一个指针用来接收地址
    *p = 20;
}

需要注意的是C当中的方法形参使用的是变量副本机制,也就是说,方法形参也是有个自己的内存地址。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值