|
|
检测点7-10
1.若一个对象的类型是指向float的指针,则它指向的那个对象的类型是什么?
答:float
2.若一个对象的类型是指向“指向char的指针”的指针,则它指向的那个对象的类型是什么?
答:指向char的指针(char *)
3.在源文件c0707.c中,对象x、p和pp的类型名是什么?语句S3中的表达式x、* p和* * pp是左值吗?它们是如何转换为数值的?请说明具体的转换过程。
答:对象 x的类型名是int;对象p的类型名是int *;对象pp的类型名是int * *
语句S3里的x、* p和* * pp都是左值。转换过程:
x直接执行左值转换;
* p是p先执行左值转换,一元*作用于转换后的值,得到p所指向的对象,故* p是左值,执行左值转换。
* * pp是pp先执行左值转换,最近的一元*作用于转换后的值,得到pp所指向的对象,故* pp是左值,执行左值转换,得到pp所指向的那个对象的值,是指针。最左侧的一元*作用于这个值,得到被指向的对象,故* * pp是左值,执行左值转换。
4.下面是一个程序,f函数的功能通过形参pp递增对象x的值并打印递增后的新值,请在下画线上填写适当的表达式以实现该功能。
# include <stdio.h>
void f (int * * pp)
{
printf ("%d\n", _++ * * pp_);
}
int main (void)
{
int x = 1089, * p = & x, * * pp = & p;
f (_pp_);
}
注:第二个空白填写& p也是可以的。
|
|