例如: void maino i int a=1, b=2, * pa=&a, pb=&b; 若改为*pa=*pb; papb; 有何不同? printf(a=%od\nb=% pa=%dn * pb=%odn", a, b, *pa, pb); pa a pa a &a &b pb b pb b &b 2 &b 2 初始化 执行pa=pb;
16 void main() { int a=1,b=2,*pa=&a,*pb=&b; pa=pb; printf("a=%d\nb=%d\n*pa=%d\n*pb=%d\n",a,b,*pa,*pb); } 例如: 1 a &b &b pb 2 b pa 执行pa=pb; 1 a &a &b pb 2 b pa 初始化 若改为*pa=*pb; 有何不同?
例如: void maino i int a=1, b=2, * pa=&a, pb=&b; b papb printf(a=%od\nb=% pa=%dn * pb=%odn", a, b, *pa, pb); pa a pa a &a &a 2 pb b pb b &b 2 &b 2 初始化 执行*pa=pb
17 void main() { int a=1,b=2,*pa=&a,*pb=&b; *pa=*pb; printf("a=%d\nb=%d\n*pa=%d\n*pb=%d\n",a,b,*pa,*pb); } 例如: 1 a &a &b pb 2 b pa 初始化 2 a &a &b pb 2 b pa 执行*pa=*pb;
指针变量的赋值运算 ④把数组的首地址赋予指向数组的指针变量。 例如:inta5,*pa pa=a;(C语言规定数组名表示数组的首地址) 也可写为:pa=&a0; ■数组第一个元素的地址也是整个数组的首地址,可赋予pa 指针变量。 ■当然也可采取初始化赋值的方法 int a 51, pa=a;
18 ④把数组的首地址赋予指向数组的指针变量。 例如: int a[5],*pa; pa=a; (C语言规定数组名表示数组的首地址) 也可写为:pa=&a[0]; 数组第一个元素的地址也是整个数组的首地址,可赋予pa 指针变量。 当然也可采取初始化赋值的方法: int a[5],*pa=a; 指针变量的赋值运算
指针变量的赋值运算 ⑤把字符串的首地址赋予指向字符类型的指针变量。 例如:char*pe; pc=C language 或用初始化赋值的方法写为: char *pc=C Language ■这里应说明的是并不是把整个字符串装入指针变量,而 是把存放该字符串的字符数组的首地址装入指针变量。 ■输出字符串是可以使用%s格式字符串,即语句 printf("%os",pc);
19 ⑤把字符串的首地址赋予指向字符类型的指针变量。 例如: char *pc; pc="C language"; 或用初始化赋值的方法写为: char *pc="C Language"; 这里应说明的是并不是把整个字符串装入指针变量,而 是把存放该字符串的字符数组的首地址装入指针变量。 输出字符串是可以使用%s格式字符串,即语句 printf(“%s”,pc); 指针变量的赋值运算
说明: ■指针变量可以赋予0值,p=0表明p是空指针,它不指向任 何变量 ■在头文件" stdio. h"中有:# define null0 因此在C程序中常使用int*p=NULL;让指针变量p为空 指针。 ■对指针变量赋0值和不赋值是不同的。指针变量未赋值时, 可以是任意值,是不能使用的。否则将造成意外错误。 而指针变量赋0值后,则可以使用,只是它不指向具体的 变量而已
20 指针变量可以赋予0值,p=0表明p是空指针,它不指向任 何变量 在头文件"stdio.h"中有:#define NULL 0 因此在C程序中常使用 int *p=NULL; 让指针变量p为空 指针。 对指针变量赋0值和不赋值是不同的。指针变量未赋值时, 可以是任意值,是不能使用的。否则将造成意外错误。 而指针变量赋0值后,则可以使用,只是它不指向具体的 变量而已。 说 明: