题目: 以下哪项是正确的指针赋值语句?

int *p1, *p2, m = 5, n;

选项:

(A) p1 = &m; p2 = &p1; (B) p1 = &m; p2 = &n; *p1 = *p2; (C) p1 = &m; p2 = p1; (D) p1 = &m; *p1 = *p2;

正确答案: A 和 C

解析:

A选项: p1 = &m; p2 = &p1;

  • p1 = &m; 将变量 m 的地址赋值给指针 p1,此时 p1 指向 m
  • p2 = &p1; 将指针 p1 的地址赋值给指针 p2,此时 p2 也指向 m

C选项: p1 = &m; p2 = p1;

  • p1 = &m; 将变量 m 的地址赋值给指针 p1,此时 p1 指向 m
  • p2 = p1; 将指针 p1 所指向的地址赋值给指针 p2,此时 p2 也指向 m

B选项: p1 = &m; p2 = &n; *p1 = *p2;

  • p1 = &m; 将变量 m 的地址赋值给指针 p1,此时 p1 指向 m
  • p2 = &n; 将变量 n 的地址赋值给指针 p2,此时 p2 指向 n
  • *p1 = *p2;p2 所指向地址的值(即 n 的值)赋值给 p1 所指向的地址(即 m 的值)。这会导致变量 m 的值被修改为 n 的值,不符合题目要求。

D选项: p1 = &m; *p1 = *p2;

  • p1 = &m; 将变量 m 的地址赋值给指针 p1,此时 p1 指向 m
  • *p2 没有被赋值,p1 不能通过 *p2 获取值,不符合题目要求。

总结:

在指针赋值语句中,要注意区分直接赋值和间接赋值,以及指针和地址的概念。A 和 C 选项都是正确的赋值语句,因为它们正确地将指针指向了变量的地址。而 B 和 D 选项则包含了错误的赋值操作,导致了不符合题目要求的结果。

C语言指针赋值语句:正确与错误解析

原文地址: https://www.cveoy.top/t/topic/n03S 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录