(3)通过形参指针变量,改变该个变量的值。 (4)主调函数中就可以使用这些改变了值的变量。 9.1.4实例验证 程序9-2:对输入的两个整数按大小顺序输出。 使用函数处理,并且用指针类型的数据作为函数参数。 main( { int *p1,*p2,a,b; scanf("%d,%d",&a,&b);
(3)通过形参指针变量,改变该n个变量的值。 (4)主调函数中就可以使用这些改变了值的变量。 9.1.4 实例验证 程序9-2:对输入的两个整数按大小顺序输出。 使用函数处理,并且用指针类型的数据作为函数参数。 main() { int *p1,*p2,a,b; scanf("%d,%d",&a,&b);
p1=&ap2=&b; if(a<b)swap(p1,p2); printf("a=%d,b=%d\n",a,b); } swap(pt1,pt2) int *ptl,*pt2; {intp树 p=*pt1; *pt1=*pt2; *pt2=p; }
p1=&a;p2=&b; if(a<b)swap(p1,p2); printf("a=%d,b=%d\n",a,b); } swap(pt1,pt2) int *pt1,*pt2; {int p; p=*pt1; *pt1=*pt2; *pt2=p; }
9.2指针的运算 9.2.1指针的赋值运算 C语言允许指针接收任意变量的地址,若有以下定义: inti,j[10]; int funl(); int *p,*p1=&i; 根据这些定义,如果要将变量的地址赋给指针变量p 时,可用以下方式:
9.2 指针的运算 9.2.1 指针的赋值运算 C语言允许指针接收任意变量的地址,若有以下定义: int i,j[10]; int funl(); int *p,*p1=&i; 根据这些定义,如果要将变量i的地址赋给指针变量p 时,可用以下方式:
p=&i; 而将数组的起始地址赋给指针变量,则只需将数组名放在 赋值语句的右边: p=5 但是,如果要将数组的某个元素的地址赋给指针变量p,则 必须按照基本类型变量方式在其前面加上地址运算符&: p=&j[2] 对于一个已经定义的函数,可以将它的入口地址赋给指针变 量p:
p=&i; 而将数组j的起始地址赋给指针变量p,则只需将数组名放在 赋值语句的右边: p=j; 但是,如果要将数组j的某个元素的地址赋给指针变量p,则 必须按照基本类型变量方式在其前面加上地址运算符&: p=&j[2]; 对于一个已经定义的函数,可以将它的入口地址赋给指针变 量p:
p=fun1; 一个被赋过值的指针变量本身也可以出现在赋值语句的右端, 将它赋值给另一指针变量: p=p1; 需要注意的是,不能用一个常量或一个表达式来给指针变量 赋值。例如,下列指针赋值的表述方式都是非法的。 p=&86; /*不允许用一个常量来给指针变量赋值*/ p=&(i+5): /*不允许用一个表达式来给指针变量赋值*/ 9.2.2指针的算术运算
p=fun1; 一个被赋过值的指针变量本身也可以出现在赋值语句的右端, 将它赋值给另一指针变量: p=p1; 需要注意的是,不能用一个常量或一个表达式来给指针变量 赋值。例如,下列指针赋值的表述方式都是非法的。 p=&86; /*不允许用一个常量来给指针变量赋值*/ p=&(i+5); /*不允许用一个表达式来给指针变量赋值*/ 9.2.2 指针的算术运算