定义指针变量的一般形式: 基类型 *指针变量名例: float *pointer_3;(pointer_3是指向实型变量的指针变量,即其中存放 的应该是一个float类型变量的地址)
char *pointer_4;(pointer_4是指向字符型变量的指针变量)
C基础
指针变量指向的改变:方法:将一个该指针允许指向的变量的地址赋给该指针; 执行赋值语句之前 pointer_1 i 执行赋值语句之后 pointer_1 i 例
pointer_1=& i
定义指针变量时应注意的两点:(1)“*”表明它后面所跟的变量类型是指针型变量;需要 指出的(以上例为例),指针变量名为pointer_1,而不是 *pointer_1, *pointer_1是一个整型变量; (2)在定义指针变量时必须指定基类型。因为不同数据类型 占用的内存空间大小不同,在进行指针移动和运算时,将导 致不同的结果。如“指针值+1‖,对于基类型为整型,将向 后移动两个字节,对于基类型为实型,将向后移动四个字节;
C基础
10.2.2指针变量的引用
说明1:指针变量中只能存放地址(指针),而且“地址” 也有类型,不能把其它类型的数据赋给指针变量。 例:int p ; 为整型指针变量 float f; p = &f; p=100; 都为非法赋值。实际运行时,编译器只提出警告,程 序仍可以运行,但是往往会导致系统错误。----―该程序执行了非法操作…‖ …. 遇到问题问题需要关闭,我们对此引起的不便 表示抱歉…
C基础
思考指针变量也是变量,指针变量占多少字节 呢?它的大小又有什么含义呢?2000 内存 2004 i_pointer 3 内存 2000 整型变量i
在16位计算机中指针是2字节,在32位计算机中是4字节: 4字节表示指针变量i_pointer占4字节,而不管它所指向的 是什么,即指针变量只和编译器相关,和指向类型无关 指针的大小表示了它的”寻址能力“,4字节最多可以表示 的地址是:0xffffffff,即232=4G
C基础
指针的运算符有关的两个运算符: (1)& :取地址运算符; (2)*:指针运算符(或称为“间接访问”运算符) 例:&a为变量a的地址,*p为指针变量p所指 向的存储单元; 注意:*有多重含义: int* p; *p=3; p*3;
例程说明 例
C基础
二. 指针变量的引用 p1 a 例10.1 100 *p1 &a main( )
{ p2 b int a , b ; 10 *p2 &b int *p1 , *p2 ; a = 100 ; b = 10 ; p1 = &a ; p2 = &b ; printf ( “ %d , %d \n ”, a , b ) ; /*直接访问方式*/ printf ( “ %d , %d \n ”, *p1 , *p2 ) ; /*间接访问 } 结果: 100 , 10 100 , 10 程序中: *p1表示指针变量 p1所指向的变量,即 a . *p2表示指针变量 p2所指向的变量,即 b .
C基础
关于 & 与 * 运算符的说明: 1: & 是取地址运算符. 如: &a , &b 等. * 是指针运算符. 用于定义时表示其后的标识 符是指针变量.而在程序中*p 则表示指针变量 p 所指向的变量,即目标变量。 2. & , * ,+ + , – – 同优先级, 按从右至左方向结合.
C基础
a: 如: int a, *p1, *p2 ; p1 = &a ; 则: &*p1 与 &a 等效 p2=&*p1 ; 或 p2=&a ; 则: p2 也指向变量 a . b: 如: int a, *p1 ; p1 = &a ; 则: *&a 与 *p1 等效, 即等价于变量a . p1 a *p1 &a *&a c: 如: int a, *p1; p1 = &a ; 则: (*p1) + + 等价于 a + + 但注意 *p1+ + 不等价于 (*p1) + +*p1+ + 等价于 *( p1+ + ) 即先得 p1 所指向变量的值,再使 指针变量 p1的值自增,此时 p1 已不在指向原来的变量了.
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科信管C基础第10章-指针(2)全文阅读和word下载服务。
相关推荐: