Android NDK 入门学习 C语言04 理解指针的本质

什么是指针?

举个生活中的例子,当一个人披上护士服,我们把这个人叫做护士,当这个人披上军服,我们又会把这个人叫做军人。

同样的道理,当一个变量保存的是内存中的一个值的时候,那么这个变量就叫做普通变量,而当这个变量保存的是一个内存地址的时候,那么这个变量就叫做指针。如果还是不理解,那么就来看下面的图。

在计算机里,内存是以字节为单位进行组织的,每一个字节都会对应一个内存地址。内存地址中,保存的则是具体的数据,很明显,我们想要获取某个数据,就必须找到它所在的内存地址,通过内存地址去找它。

上面我说过,指针,本质上就是一个保存着内存地址的变量。下面我们就通过代码来看,在C语言里,指针是如何通过代码体现的。

先定义一个int类型的变量,变量名是number

int number = 10;

接下来创建一个指针

int    *p   ;

注意这里的p就是指针的名字,其实就是一个变量名,只不过它保存的是一个内存地址,为了和普通变量以示区分,所以才叫指针。

那么接下来,我们就往p里保存内存地址。

上面我说过,一个数据既然保存在内存中,那么该数据就必然有它对应的内存地址,比如变量number 所保存的10,这个10它所在 的内存地址要怎么获取呢?

答案很简单,只需要通过&number,就表示获取10所在的内存地址。因为10是保存在变量里的,所以&number就相当于是获取10所在的内存地址。明白了这点后,那么就好办了,如下代码就表示,将&number的地址保存到指针p里。

p = &number;

下面我们就来通过完整的程序,将p里面的内存地址输出来看一下

#include "CMakeProject1.h"

using namespace std;

int main()
{
	int number = 10;

	int   *p = &number;
	
	printf("%x", p);
	system("pause");
	return 0;
}

运行结果如下

这里说明下,%x,表示将p里的值以16进制的形式展示。

注意这里的12ff92c就是number的内存地址,数据10就是保存在这个内存地址里。

我们可以通过内存分析工具,亲自去看一下这个内存地址是不是真的保存了一个10。

现在跟我做,根据下图,依次点击到内存1

在打开的窗口,按照如下输入

现在你明白指针是什么了吧,它其实就是一个保存着内存地址的变量,我们将这种变量叫做指针。

现在再来学习一个操作,就是通过指针获取number中的值,代码如下

这里需要注意的是,%d是一个占位符,它表示将*p获取到的值以整数展示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值