题目
(单选题) 若已定义int a=5;下面对(1),(2)两个语句的正确解释是( )。(1)int *p=&a; (2) *p=a;(本题3.0分)A. 语句(1)和(2)中的 *p含义相同,都表示给指针变量p赋值B. (1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量pC. (1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋给指针变量pD. (1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋于*p
(单选题) 若已定义int a=5;下面对(1),(2)两个语句的正确解释是( )。(1)int *p=&a; (2) *p=a;(本题3.0分)
- A. 语句(1)和(2)中的 *p含义相同,都表示给指针变量p赋值
- B. (1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p
- C. (1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋给指针变量p
- D. (1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋于*p
题目解答
答案
D解析: 无
解析
步骤 1:理解语句(1)的含义
语句(1) `int *p = &a;` 表示定义一个名为 `p` 的指针变量,该指针变量指向一个整型变量。同时,将变量 `a` 的地址赋值给指针变量 `p`,使 `p` 指向 `a`。
步骤 2:理解语句(2)的含义
语句(2) `*p = a;` 表示将变量 `a` 的值赋给指针变量 `p` 所指向的内存位置。由于 `p` 已经指向 `a`,所以这实际上就是将 `a` 的值赋给 `a` 本身,即 `a = a`。
步骤 3:对比选项
A. 语句(1)和(2)中的 *p含义相同,都表示给指针变量p赋值。这是错误的,因为语句(1)中的 *p 是指针变量的声明,而语句(2)中的 *p 是指针变量所指向的内存位置。
B. (1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p。这是错误的,因为语句(2)是将变量a的值赋给指针变量p所指向的内存位置。
C. (1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋给指针变量p。这是错误的,因为语句(2)是将变量a的值赋给指针变量p所指向的内存位置,而不是指针变量p本身。
D. (1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋于*p。这是正确的,因为语句(1)使指针变量p指向a,语句(2)将变量a的值赋给指针变量p所指向的内存位置,即变量a本身。
语句(1) `int *p = &a;` 表示定义一个名为 `p` 的指针变量,该指针变量指向一个整型变量。同时,将变量 `a` 的地址赋值给指针变量 `p`,使 `p` 指向 `a`。
步骤 2:理解语句(2)的含义
语句(2) `*p = a;` 表示将变量 `a` 的值赋给指针变量 `p` 所指向的内存位置。由于 `p` 已经指向 `a`,所以这实际上就是将 `a` 的值赋给 `a` 本身,即 `a = a`。
步骤 3:对比选项
A. 语句(1)和(2)中的 *p含义相同,都表示给指针变量p赋值。这是错误的,因为语句(1)中的 *p 是指针变量的声明,而语句(2)中的 *p 是指针变量所指向的内存位置。
B. (1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p。这是错误的,因为语句(2)是将变量a的值赋给指针变量p所指向的内存位置。
C. (1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋给指针变量p。这是错误的,因为语句(2)是将变量a的值赋给指针变量p所指向的内存位置,而不是指针变量p本身。
D. (1)在对p进行说明的同时进行初始化,使p指向a(2)将变量a的值赋于*p。这是正确的,因为语句(1)使指针变量p指向a,语句(2)将变量a的值赋给指针变量p所指向的内存位置,即变量a本身。