指针变量的定义与操作(1) (1)定义并初始化指针变量 int 1=3 int *p= &i (2)定义指针变量,将变量地址赋值给指针变量 nt=3; nt p p=&i;
指针变量的定义与操作(1) (1)定义并初始化指针变量 int i=3; int *p = &i; (2)定义指针变量,将变量地址赋值给指针变量 int i=3; int *p; p = &i;
指针变量的定义与操作(2) (3)将整数值赋值存放到指针变量指向的內存地址 int i=3 int *p=&i p=5;相当于*&=5; (4)将整型变量的值存放到指针变量指向的内存地址 int i=3,j=7 int i p=相当于*&=j 运算苻与&运算符的优先级相同,且都是“右结合”。 p=.中的*与指针变量定义中的*;是不同的
指针变量的定义与操作(2) (3)将整数值赋值存放到指针变量指向的内存地址 int i=3; int *p = &i; *p=5;//相当于*&i=5; (4)将整型变量的值存放到指针变量指向的内存地址 int i=3,j=7; int *p = &i; *p=j;//相当于*&i=j; *运算符与&运算符的优先级相同,且都是“右结合”。 *p=….中的*与指针变量定义中的*;是不同的
指针赋值的注意事项 1、指针变量不能与普通变量相互赋值 int X,* px pX=X;在VC中会出现警告提示。 2、指向同一种数据类型的指针变量之间可以相互赋值 而指向不同数据类型的指针变量之间不可以相互赋值。 int a, p1, *p2; int a, 'p1; float*p2 p1=&a; p1=&a; p2=p1 p2=p1; ∥在VC中会出现“类型不一致”的警告提示。 3、指针变量与普通变量一样,也可在定义的同时赋初值。 int x,y; int *px&x 将已定义变量的地址赋给指針变量px
指针赋值的注意事项 1、 指针变量不能与普通变量相互赋值。 int x,*px; px=x; //在VC中会出现警告提示。 2、指向同一种数据类型的指针变量之间可以相互赋值 而指向不同数据类型的指针变量之间不可以相互赋值。 int a,*p1,*p2; int a,*p1; float *p2; p1=&a; p1=&a ; p2=p1; p2=p1 ; //在VC中会出现“类型不一致”的警告提示。 3、指针变量与普通变量一样, 也可在定义的同时赋初值。 int x,y; int *px=&x; 将已定义变量x的 地址赋给指针变量px;
空指针 (1)什么是空指针? 不指向任何实际的对象或者函数的指针为空指针。 (2)将指针初始化为空指针,这不是说指针的存储 单元为空,而是给指针赋予一个ASC码值为0的字符 NULL。 例如: char *p=NULL; (3)将指针变量(p1,p2,p3,p4)进行如下操作,皆可以使 得指针成为空指针 p1=0p2=0Lp3="o;p4=(oid)0;
空指针 (1)什么是空指针? 不指向任何实际的对象或者函数的指针为空指针。 (2)将指针初始化为空指针,这不是说指针的存储 单元为空,而是给指针赋予一个 ASCII码值为0的字符 NULL。 例如:char *p=NULL; (3)将指针变量(p1,p2,p3,p4)进行如下操作,皆可以使 得指针成为空指针: p1 = 0;p2 = 0L;p3 = '\0'; p4=(void*)0;
Void指针 (1)指向Vod的指针为Vod指针。 (2)因为没有对象的类型是Woid,所以Vod指针又称为万能 指针。 (3)void指针示例:(指针类型的强制转换) int i=3 pvoid=pl; int*pl=&i; printf("int: pvoid=%odn", (int*)pvoid); float*fp, f1=3. 1f; fp=&f1 pvoidfp; int“p4=(void2)0; printf( float: pvoid=%fn", (float )pvoid); void* pvoid 输出结果=3:31000
void指针 (1)指向void的指针为void指针。 (2)因为没有对象的类型是void,所以void指针又称为万能 指针。 (3) void指针示例: (指针类型的强制转换) int i=3; int *p1=&i; float *fp,f1=3.1f; int *p4=(void*)0; void *pvoid; pvoid=p1; printf("int:pvoid=%d\n",*(int*)pvoid); fp=&f1; pvoid=fp; printf("float:pvoid=%f\n",*(float*)pvoid); 输出结果=3;3.10000