第 8 章指针【练习 8-1】如果有定义"intm,n=5,*p=&m;"与 m=n 等价的语句是 B
A.m=*p;B
*p=*&n;C
m=&n;D
m=**p;解答:A:p 是指向 m 的指针变量,所以*p 等价于 m
即 m 二 m
B:&n 是 n 的地址,*&n 是 n 的值,即把 n 的值赋给 p 指向的值 m
即 m 二 n
C:&n 是 n 的地址
即把 n 的地址赋给 m
D:**p 是指 p 指向的指针所指向的值,在此无意义
【练习 8-2】调用函数求两个数的和与差:计算输入的两个数的和与差,要求自定义一个函数 sum_diff(floatopl,floatop2,float*psum,float*pdiff),其中opl 和 op2 是输入的两个数,*psum 和*pdiff 是计算得出的和与差
解答:#includevoidsum_diff(floatop1,floatop2,float*psum,float*pdiff);intmain(void){floatop1,op2,sum,diff;printf("Inputop1andop2:");scanf("%f%f",&op1,&op2);sum_diff(op1,op2,&sum,&diff);printf("%f+%f=%f;%f-%f=%f\n",op1,op2,sum,op1,op2,diff);return0;}voidsum_diff(floatop1,floatop2,float*psum,float*pdiff){*psum=op1+op2;*pdiff=op1-op2;}【练习 8-3】两个相同类型的指针变量能不能相加
因为指针变量是一种特殊的变量,指针变量的值存放的是所指向变量的地址,两个地址相加并不能保证结果为一个有效的地址值,因而在 C 语言