指针变量 为什么要为指针变量定义类型: 由于不同的数据有不同的数据类型,如char 仅占一个字节、int占两个字节、foat型占 个字节,而内存又是以字节为单位进行地址编 号,因而对char型,只要地址数加减1,取出 里面的数据就是char型的完整数据。对int型就 不同了,要取出其中的数据需2字节,就不能 对地址进行简单的加减1了。怎样取出一个完 整的in型数据或foat型数据呢?如果能够将指 针变量也定义为具有同样的数据类型,那么对 指针进行加1或减1运算,就是让指针移动相应 基类型对应的字节数
6 指针变量 • 为什么要为指针变量定义类型: 由于不同的数据有不同的数据类型,如 char 仅占一个字节、int 占两个字节、float型占三 个字节,而内存又是以字节为单位进行地址编 号,因而对char型,只要地址数加减1,取出 里面的数据就是char型的完整数据。对int型就 不同了,要取出其中的数据需2字节,就不能 对地址进行简单的加减1了。怎样取出一个完 整的int型数据或float型数据呢?如果能够将指 针变量也定义为具有同样的数据类型,那么对 指针进行加1或减1运算,就是让指针移动相应 基类型对应的字节数
指针变量() 2byte p 1234 3.14 byte P+1 P+2 P+1 P+3 2.12 二、指针变量赋值(这里要用到取地址运算符“&”) 指针变量的赋值:例、 pointer 1=&i; pointer 2=&i 注意,指针变量中只能存放地址,不能将一个非地址类型的数据(如常 数等)赋给一个指针变量,如: pointer1=100
指针变量(2) 二、指针变量赋值(这里要用到取地址运算符“&”) 指针变量的赋值:例、 pointer_1 = &i; pointer_2 = &j; 注意,指针变量中只能存放地址,不能将一个非地址类型的数据(如常 数等)赋给一个指针变量,如:pointer_1 = 100; 3.14 2.12 p P+1 4byte p P+1 P+2 P+3 1 2 3 4 2byte
也可以在定义指针变量的同时指定其初值,如、 Int a; int*p=&a 三、指针变量的引用 1、取地址运算:如:int卹p,i=3,j=5: p=&i;/让p其指向 变量i 2、对指针变量施加*运算,则代表取指针所指向的单元的内容。 这里,p与变量等价的。 区分:*运算符在不同场合的作用,编译器能够根据上下文环境判别的作用。 int a, b, c; int*p;(*表示定义指针) p=&a; p=100;(*表示指针运算符) c=a*b;(*表示乘法运算符)
8 也可以在定义指针变量的同时指定其初值,如、 int a; int *p = &a; 三、指针变量的引用 1、取地址运算:如:int *p , i=3, j=5; p=&i; /*让p其指向 变量i */ 2、对指针变量施加*运算,则代表取指针所指向的单元的内容。 这里,*p与变量i是等价的。 区分:*运算符在不同场合的作用,编译器能够根据上下文环境判别*的作用。 int a,b,c; int * p; (*表示定义指针) p = &a; *p = 100; (*表示指针运算符) c = a * b; (*表示乘法运算符)
指针变量(3) printf(“ odⅦn”,p); p=&i printf(%dn”,p) 但不能int char c=“A =&c;(类型不匹配) 区分运算符的以下用法: int a i intp=&a;/定义指针变量时指定初值,是为p指定初值* 卹p=100;/给指针p所指向的变量赋值,这里是给变量a赋值*
指针变量(3) printf(“%d \n” ,*p) ; p=&j; printf(“%d \n” ,*p) ; 但不能 int *p; char c=‘A’ ; p=&c ; (类型不匹配) 区分*运算符的以下用法: int a ; int *p = &a; /* 定义指针变量时指定初值,是为p指定初值*/ *p = 100; /* 给指针p所指向的变量赋值,这里是给变量a赋值*/
例I61c main() i int *pl, *p2, al, a2 scanf(“%d%d”,&al,&a2); pl=&al; p2=&a2; printf(“%d,%dmn”,*pl,p2); 2=p1 printf(“%d,%dmn”,*pl,*p2); 这里有一个运算符*,其作用是:加在指针变 量的前面,取出该指针变量所指对象的内容
10 例l6_1.c main( ) { int *p1, *p2, a1, a2; scanf(“%d %d” , &a1, &a2 ); p1 =&a1; p2=&a2; printf(“%d , %d \n” , *p1, *p2); p2 = p1; printf(“%d , %d \n” , *p1, *p2); } 这里有一个运算符*,其作用是:加在指针变 量的前面,取出该指针变量所指对象的内容