第40题  设有下面程序

c_choice40-01

则程序的运行结果是­

­      A    10

­      B    100

­      C    110

­      D    无法确定

答案  B

解析    考查指针间接访问的语义。

程序从函数main开始执行,main的变量p和x创生,x的初值为10,指针变量p没有确定的初值,反映新分配内存的随机性物理状态,如下图所示:

c_choice40-03

然后执行语句

­        p = &x; ­

运算符&求得int型变量x的地址,即得到一个int型指针值并赋于int型指针变量p,就是让指针p指向变量x,如下图所示。一个指针变量存储谁的地址,就说它指向谁。

c_choice40-04

继续执行语句

­        ∗p = 100;

运算符∗表示间接引用,即引用p所指的对象,∗p等价于x,将100赋于∗p,也就是赋于x,执行效果如下图所示:

c_choice40-05

继续执行语句

­       printf(″%f\n″, x);

将x的当前值输出,即输出100。至此,函数main执行结束,其变量p和x消亡

知识点

① &叫取地址运算符,设有变量a,则&a就是变量a的地址,即指向a的指针值。

② ∗叫指针间接引用运算符,设有指针q,则∗q就是q所指变量的名字,如下图所示:

c_choice40-06

③ 指针变量用来存储变量的地址值,它存储着谁的地址,就说它指向谁。为指针变量前置∗运算符,就可访问它所指向的对象。

练习题1  设有下面程序

c_choice40-02

则程序的运行结果是­

­      A    0.500000

­      B    2.000000

­      C    1.500000

­      D    不确定

答案  C

解析  可仿上分析。

赞赏

返回