指针地址在c语言的作用,地址与指针

Hi,欢迎来到指针的世界,也许您早已听过它的大名,指针被称为是C语言的精华所在。真正理解和掌握指针是征服C语言的关键所在!

在众多的计算机语言中,试问:还有哪门语言可以有C语言这样在作用、速度和安全上平衡的如此优异的呢?而指针则在其中扮演了重要的角色!或许有人会说:正是因为指针才使C程序变得非常不安全!而我则想说的是:这就要求C程序员要有更高的驾驭C语言的能力,而这点也恰好反映出C的设计哲学!那就是:“C充分相信程序员!”所以:请不要辜负她!

OK,在学习指针之前,我们先弄清楚一个概念:

地址

何谓地址?在内存(注意,我们这里提到的内存并不是人们常说的计算机的物理内存,而是虚拟的逻辑内存空间)当中,简单点说:地址就是可以唯一标识某一点的一个编号,即一个数字!我们都见过尺子,我们统一以毫米为单位,一把长1000毫米的尺子,其范围区间为0~999,而我们可以准确的找到35毫米、256毫米处的位置。同样的道理,内存也如此,也是像尺子一样线性排布,只不过这个范围略大,在我们最广泛使用的32位操作系统下,是从0~4,294,967,295之间,而地址就是这之中的的一个编号而已,习惯上,在计算机里地址我们常常用其对应的十六进制数来表示,比如0x12ff7c这样。在我们的C程序中,每一个定义的变量,在内存中都占有一个内存单元,比如int类型占四个字节,char类型占一个字节等等,每个字节都在0~4,294,967,295之间都有一个对应的编号,C语言允许在程序中使用变量的地址,并可以通过地址运算符"&"得到变量的地址。

#include

int main()

{

int i;

int a[10]={1,2,3,4,5,6,7,8,9,0};

char b[10]={'c','l','a','n','g','u','a','g','e'};

for(i=0;i<10;i++)

{

printf("int Address:0x%x,Value:%d\n",&a[i],a[i]);

}

printf("\n");

for(i=0;i<10;i++)

{

printf("char Address:0x%x,Value :%c\n",&b[i],b[i]);

}

return 0;

}

在32位linux系统下运行参考结果:

int Address:0xbfb949c4,Value:1

int Address:0xbfb949c8,Value:2

int Address:0xbfb949cc,Value:3

int Address:0xbfb949d0,Value:4

int Address:0xbfb949d4,Value:5

int Address:0xbfb949d8,Value:6

int Address:0xbfb949dc,Value:7

int Address:0xbfb949e0,Value:8

int Address:0xbfb949e4,Value:9

int Address:0xbfb949e8,Value:0

char Address:0xbfb949f2,Value :c

char Address:0xbfb949f3,Value :l

char Address:0xbfb949f4,Value :a

char Address:0xbfb949f5,Value :n

char Address:0xbfb949f6,Value :g

char Address:0xbfb949f7,Value :u

char Address:0xbfb949f8,Value :a

char Address:0xbfb949f9,Value :g

char Address:0xbfb949fa,Value :e

char Address:0xbfb949fb,Value :

请亲自上机运行测试,并观察分析结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值