【理解】指针:所指变量的地址

指针

可以认为:指针就是地址,是它所指向的变量的地址

根据课本的理解

1.引入一个重要的运算符——指针运算符“ * ”,也称间接运算符。

2.指针运算符“ * ”用来定义指针变量,指针变量(简称指针)是一种特殊的变量,它存储的内容只能是内存地址,比如存储另一个变量的地址。
语法格式:指针所指向的类型 * 指针变量的名称;

用一个例子说明指针变量的含义和用法
int num = 1;
int * p;
p = #
定义指针变量 p,指针变量 p 存储的是变量 num 的地址(即 &num)。
形象的把指针变量 p 存储变量 num 的地址,称为指针变量 p 指向变量 num。

指针变量也是一种变量,而变量是一块空间的名称,特殊在于以指针变量为名的这块空间里只能存放地址。

指针变量,简称指针。(指针的本质是一种特殊的变量)
————————————
指针变量和变量的区别只是所表示的空间要存的东西不一样
变量所表示的空间想存什么存什么
指针变量所表示的空间只能存内存地址
——————————————————
所谓指向,就是存有一个变量的地址,就是指向这个变量。
——————————————————————————
指针和地址的区别在于,指针是一个变量,是一块地址空间的名称,而地址是一块空间的地址(额…)是一个整数。
从某种意义上来说,指针和地址都像是一个房间的房间号,就比如一个房间叫腾云阁,门号是1024,这里的腾云阁就是指针,1024就是内存地址。
只不过这个腾云阁里存的是一个内存地址(也只能存内存地址),这个1024就是这个指针的地址。
没毛病ヽ(✿゚▽゚)ノ

所以说指针就是地址,地址就是指针这种说法也有一定道理
翻译过来就是指针变量就是地址
那也就可以说变量就是地址。。。感觉好像有哪里不对?
不能说变量就是地址的原因就是指针变量里存的才是地址。
“指针就是地址” 这句话中的这个地址是指针变量所存的地址,而不是指针变量本身的地址。
用一句话来说指针就是它所指向的变量的地址

内存地址是一种用于软件及硬件等不同层级中的数据概念,用来访问电脑主存中的数据。–百度

指针变量 p 变量 num
&num 1

注意
①可以在定义指针变量的同时进行初始化。
例如: int * p = #
②不能使用常量给指针变量赋值。
假设变量 num 的地址是 1234002,即使这样,也不能写成 p = 1234002。
③指针变量无论指向什么样的数据类型,都占用相同大小的空间,在 32 位机器上占 4 个字节( 32 位)。
④指针变量的类型必须和它所指向的数据类型一样。
⑤指针变量指的是“ p ”,而不是“ *p ”。
定义指针变量时的“ int * ”表示它是一个指向整型变量的指针。
⑥在明确指针变量 p 指向变量 num 后,表达式“ * p ”就是指针变量 p 所指向的那个变量,即 num。
比如:*p = 2; //等价于num = 2;
因为指针运算符“ * ”的优先级高居第2位,远高于排在倒数第2的赋值运算符,所以表达式“ *p ”先组成一个整体,表示指针 p 所指向的变量,即 num,自然对表达式“ *p ”赋值就是对变量 num 赋值。
⑦分析表达式“ *p += 1 ”、“ *p++ ”和“ (*p)++ ”的不同,假设指针变量 p 指向变量 num,且 num = 1。
“ * ” 的优先级高于赋值运算符“ += ”,即原式可化为 num += 1;
“ * p++;”指针运算符 “ * ”和自加运算符“ ++ ”优先级相同,运算顺序是从右至左的,所以先计算“ p++ ”,又因为使用的是自加的后置运算,所以表达式“ p++ ”的值仍是指针变量 p 的值,即变量 num 的地址,所以整个表达式的值等于1。
在获取到整个表达式的值之后,指针变量 p 自身的值加 1,指针变量 p 存储的不再是变量 num 的地址,也就是 p 的指向发生了变化。
至于如何变化

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值