关于C语言的指针和指针变量两个概念

今天闲来无事又回头看看之前的课本,感觉平时写代码有些基础知识还是不牢固

首先对于一个存储单元,它的属性分为存储单元的地址和存储单元的内容,假设程序定义了三个整形变量I,j,k。程序编译后,例如分配8000~8003的4个字节给变量i,8004~8007的4个字节给变量j,8008~8011的4个字节给k(根据不同的编译系统)

printf("i=%d\n",i);实际上是通过变量名i来找到存储单元的地址,然后从地址进行存取操作的。程序经过编译后都是将变量名转化为变量的地址,对变量的存取都是对地址进行的。

首先由直接访问间接访问引入,

直接访问:就是上面说的按变量名进行访问,

例如
int i;
i = 1;
这种通过i

间接访问就是将变量i的地址存放在另一变量中,然后通过该变量来找到i的地址,从而进行存取

i_pointer = &i;    //将i的地址放在i_pointer中,这时i_pointer的值就是8000(变量i所占单元的起始地址)

要存取i的值,既可以采用直接访问的方式,也可以采用间接访问的方式,先找到存放"变量i的地址"的变量i_pointer,从中去除i的地址(8000),然后从8000字节开始的存储单元中取出i的值1。

形象的比喻就是为了打开一个A抽屉,有两种办法,(直接访问)就是直接将A钥匙带在身上,需要时直接用钥匙打开抽屉。

(间接访问)为了安全起见将A钥匙放在B抽屉锁起来,如果需要打开A抽屉,需要先用B钥匙打开B抽屉,拿出A钥匙后再打开A抽屉

 

 

 

 

最后说下这篇文章的最终解释:一个变量的地址称为该变量的指针,例如地址8000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为指针变量。上述的i_pointer就是一个指针变量。指针变量就是地址变量,用来存放地址,指针变量的值是地址(即指针)

区分指针和指针变量这两个概念。例如可以说变量i的指针是8000,而不能说i的指针变量是8000.指针是一个地址,而指针变量是存放地址的变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值