在 stdio. h中 具有值的指针变量不指向定义的值为之为 “空指针变量 定义指针变量0的符号常方法 直接把其初始化成“空指针 int * p=0; 或int如p=NUD 再次强调: 地址是一种特殊的数据类型,并非整数,它们是 与整数不相容。因此除数值0之外不能简单地把一 个整数当作地址,作为指针变量的初始化值。 16
16 具有0 值的指针变量不指向任何对象,被称之为 “空指针变量” 。定义指针变量时可用如下的方法 直接把其初始化成“空指针”: int *p = 0 ; 或int *p = NULL ; 再次强调: 地址是一种特殊的数据类型,并非整数,它们是 与整数不相容。 因此,除数值0之外,不能简单地把一 个整数当作地址, 作为指针变量的初始化值。 在stdio.h 中 定义的值为 0 的符号常 量
空指针变量与无定义指针变量有区别 空指针变量指的是指针变量的值为0,表示指针变 量未指向任何对象,虽然能够直接使用它但仍然有 破坏系统的危险性; 无定义指针变量的值是不确定的它可能指向一个 不可预知的存储单元,直接使用无定义指针变量要 比使用空指针变量的危险性大得多
17 空指针变量与无定义指针变量有区别: 空指针变量指的是指针变量的值为0, 表示指针变 量未指向任何对象,虽然能够直接使用它但仍然有 破坏系统的危险性; 无定义指针变量的值是不确定的,它可能指向一个 不可预知的存储单元, 直接使用无定义指针变量要 比使用空指针变量的危险性大得多
3、指针变量的使用 若x是初值为1085的in型变量,且px是基类型为 int的指针变量,那么当执行如下的操作 px=&x main int val, x=1085,*px; px =&x 18
18 3、指针变量的使用 若x是初值为1085 的 int型变量, 且 px是基类型为 int的指针变量,那么当执行如下的操作: px = &x ; main ( ) { int val , x = 1085 , *px ; px = &x ; …… }
x的地址赋给指针变量px之后,px“指向 。如下图际示: 1998 2000 1085 2002 2000 pX
19 x 的地址赋给指针变量 px 之后, px “指向” x 。 如下图所示:
这以后便可以通过指针变量px“间接”地存取变 量x。而这种“间接”存取是用间接引用运算符“ 来实现的。 问接引用运算符“"的优先级同其他所有单目 运算符的优先级和结合性相同。由它构成的表达式 的一般形式是 p是操作数可以是指针常量、指针变量名、指 针数组元素名、及值为指针的表达式等。这些操作 数的值都必须是地址量。 20
20 这以后便可以通过指针变量 px “间接” 地存取变 量 x 。 而这种“间接”存取是用间接引用运算符 “*” 来实现的。 间接引用运算符“*” 的优先级同其他所有单目 运算符的优先级和结合性相同。 由它构成的表达式 的一般形式是: *p p 是操作数,可以是指针常量、指针变量名、 指 针数组元素名、及值为指针的表达式等。 这些操作 数的值都必须是地址量