Chinaunix首页 | 论坛 | 博客
  • 博客访问: 216211
  • 博文数量: 76
  • 博客积分: 2231
  • 博客等级: 大尉
  • 技术积分: 826
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-27 09:15
文章分类

全部博文(76)

文章存档

2011年(76)

分类: C/C++

2011-11-25 17:40:35

                          
指针变量的内容
变量d和e都被声明为指针,并用其他变量的地址予以初始化。指针的初始化是用&操作符完成的,它用于产生操作室的内存地址。
d和e的内容是地址。
d的内容和a的存储地址一致,e的内容和c的存储地址一致
变量的值就是分配给该变量的内存位置所存储的数值,即使是指针变量也不例外。

间接访问操作符
通过一个指针访问它所指向的地址的过程成为间接访问(indirection)或解引用(dereferencing the pointer)。这个用于执行间接访问的
操作符是单目操作符*。
d的值是100。当对d使用间接访问操作符时,它表示访问内存位置100并查看那里的值。
因此,*d的右值是112
d是一个指向整型的指针,对它解引用操作将产生一个整型值。类似,对float *进行间接访问将产生一个float型值。

如果不对指针变量进行间接访问操作,它的值只是简单的一些位的集合。当执行间接访问操作时,才发生实际的内存访问。
指针并不存在内建的间接访问属性。必须通过*间接访问操作符。

未初始化和非法的指针
int     *a;
*a = 12;
这个声明创建了一个名叫a的指针变量,后面那条赋值语句把12存储到a所指向的位置。
a指向哪里?12这个值存储于什么地方?
对指针进行间接访问之前,必须确保它们已经被初始化。

NULL指针
NULL指针作为一个特殊的指针变量,表示不指向任何东西。要使一个指针变量为NULL,可以赋一个零值。
为了测试 一个指针变量是否为NULL,可以将它与零值进行比较。
NULL指针的概念是非常有用的,因为给了你一种方法,表示某个特定的指针目前并未指向任何东西。例如,一个用于在某个数组中查找某个特定值的
函数可能返回一个指向查找到的数组元素的指针。如果该数组不包括指定条件的值,函数就返回一个NULL指针。这个技巧运行返回值传达两个不同
片段的信息。首先,有没有找到元素?其次,如果找到,它是哪个元素

更为安全的策略是让函数返回两个独立的值:首先是一个状态值,用于提示查找是否成功;其次是个指针,当状态值提示查找成功时,它所指向的
就是查找到的元素。

对指针进行解引用操作可以获得它所指向的值。但从定义上看,NULL指针并未指向任何东西,因此对NULL指针进行解引用操作是非法的。对指针
解引用操作之前,必须确保它并非NULL指针。

指针、间接访问和左值
间接访问操作符所需要的操作数是个右值,但这个操作数所产生的结果是个左值
int a;
int *d = &a;
指针变量可以作为左值,并不是因为他们是指针,而是因为他们是变量。对指针变量进行间接访问表示我们应该访问指针所指向的位置。间接访问
指定了一个特定的内存位置,这样就可以把间接访问表达式的结果作为左值使用。
*d = 10 - *d;

指针、间接访问和变量

指针

指针的指针

int a = 12;
int *b = &a;
c = &b;
声明
int **c;

int     a = 12;
int     *b = &a;
int     **c = &b;
**c相当于*(*c)

阅读(1416) | 评论(0) | 转发(0) |
0

上一篇:指针

下一篇:函数

给主人留下些什么吧!~~