Chinaunix首页 | 论坛 | 博客
  • 博客访问: 237125
  • 博文数量: 108
  • 博客积分: 3092
  • 博客等级: 中校
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 16:35
文章分类

全部博文(108)

文章存档

2011年(3)

2010年(43)

2009年(19)

2008年(43)

我的朋友

分类: C/C++

2008-12-12 23:09:07

指针
 
1.一个需要注意的硬件事项:边界对齐问题,在要求边界对齐的机器上,整型值存储的起始位置只能是某些特定的字节,通常是2或4的倍数。
 
2.名字与内存位置之间的关联并不是硬件所提供的,而是编译器为我们实现的,只是让我们用一种更加方便的方法记住地址,这些名字就是我们所称的变量。
 
3.不能通过检查一个值的位来判断它的类型,值的类型和值是由程序对值的使用方式决定的。
比如一段内存里面所存的二进制数据为:173159650(十进制表示)
当这段内存所表示的值为float类型是它的值为3.14
 
4.变量的值就是分配给该变量的内存位置所存储的数值,即使是指针变量也不例外。
 
5.一个常见的错误:
  int *a;
  *a = 12;
  指针变量也是变量,声明一个指向整型的指针不会创建用于存储整型的内存空间,即*a的值将是一个非法地址
  在对指针进行间接访问之前必须非常小心,确保它们已经被初始化。
 
6.NULL指针
NULL指针表示指针不指向任何东西,要使一个指针变量为NULL,可以给它赋0值。
对一个NULL指针进行间接引用操作是非法的。
对于一个指针,如果你知道指针的值该被初始化成什么地址,那就初始化,否则就将它初始化为NULL。
 
7.左值:一个有确定地址的变量才可以作为左值。
eg:char ch=‘a’; 当表达式&ch进行求值时,它的结果肯定会位于某个地方,但是你无法知道,所以是一个不合法的左值.&ch的值是ch的地址,是一个编译器确定的值,但是它的地址确实未知的。
 
8.指针运算
1)指针+-整数
  标准定义这种形式只能用于指向数组中某个元素的指针。将指针向前或向后移动整数表示数值的数组元素的大小
 
2)指针-指针
只有当两个指针指向同一个数组的元素时,这个运算才是合法的。结果是两个指针在内存中的距离(以数组元素的大小为度量)。
 
3)关系运算
==,!=:所有的指针都可以进行这两个运算,因为蜘蛛女要么指向同一个地址,要么指向不同的地址。
<,<=,>,>=:当指针指向同一个数组的元素时。
 
9.对一个指针进行减法运算,使其非法的指向了数组第1个元素的位置(指针指向数组最后一个元素后面那个元素的位置是合法的)
 
阅读(1319) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

lqseu2009-02-27 21:38:12

你好^^ 谢谢对我blog的支持 这个问题我是这么理解的: 这句话的意思是,这个式子可以将value的ASCII码值转换为这个ASCII码值所表示的数字 举个例子吧: 比如你定义: char value = 50;(或者 char value = ‘2’,这个是一样的) 然后你执行这条语句: value=value-'0'; 然后你用printf("%d",value);你就会发现这时value的值就是2了而不是50

chinaunix网友2009-02-26 22:30:52

这句话如何理解?

chinaunix网友2009-02-26 22:29:43

你好,请问书上面32页有一句话。 value=value-'0' 它用于表示一个字符转换为二进制值。

chinaunix网友2008-12-17 22:20:55

很好,谢谢.希望继续