C语言中指针剖析

马上要开始做CUDA C programming的大作业了,所以抓紧时间复习了一下C语言中关于指针的问题。发现了两篇好文章,一篇来自http://blog.21ic.com/more.asp?id=15941,作者是guyepiaoyu。对指针的比喻非常恰当,读后如醍醐灌顶。

另一篇做了详细介绍http://topic.csdn.net/u/20080504/22/a02ec262-2a6f-4797-a248-233bdb975ca1.html。讲的非常细致。

其实指针没什么神秘的,就是一个变量,但和普通变量的区别在于,普通变量存的是实实在在的数值,和指针变量存的是数值的地址。通过指针变量所标识的地址,我们可以找到这个实际数值。

比如,我们声明一个整形指针变量:

(1)int * pi; pi是一个指针。(对于任何一个声明的指针,我们都应该思考一下几个方面,a) 这个指针的类型是什么?b)指针指向的类型是什么---当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待?c)该指针指向了哪里---指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区pi指针的类型是int *, 指向类型是 int, 在32位系统中,一个整形数值在内存中占用4个字节。char类型长度为1个字节。注意:指针指向的内存区和指针单独占用的内存区是两个概念!

(2)pi=&i;把i地址的编号赋值给pi,也就是你在pi上写上i的地址编号。

(3)printf(“%d”,*pi);*pi表示pi内容所指的地址的内容,也就是说也就是说printf(“%d”,*pi);语句等价于printf( “%d”, i ) 。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值