📜  C |指针基础问题12(1)

📅  最后修改于: 2023-12-03 15:13:47.115000             🧑  作者: Mango

C指针基础问题12

在C语言中,指针是一种极其重要的数据类型,掌握指针的基础知识对于理解C语言程序的原理以及进行系统程序的开发至关重要。本文将介绍C语言中指针基础问题12。

问题描述

以下程序中,变量a、b、c、p的值分别是什么?

int a = 10, b = 20, c = 30;
int *p1 = &a, *p2 = &b, *p3 = &c, *p4;
p4 = p1;
p1 = p3;
p3 = p2;
p2 = p4;
*p2 = *p3 + *p1;
问题分析

首先定义了三个整型变量a、b、c,并分别赋值为10、20和30。接着定义了四个指向整型变量的指针变量p1、p2、p3和p4,分别初始化为a、b、c的地址。接下来执行了一些指针的赋值和指向,具体而言,实现了以下操作:

  1. 将p1指向a的地址的值赋值给p4。
  2. 将p3指向c的地址赋值给p1。
  3. 将p2指向b的地址赋值给p3。
  4. 将p4指向p1最开始的地址赋值给p2。
  5. 将p2指向的值赋值为p3指向的值加上p1指向的值。
问题解答

最后执行的那一句,将p2指向的值赋值为p3指向的值加上p1指向的值,等价于将b的值赋值为c的值加上a的值,即:

*p2 = 30 + 10;

因此,*p2的值为40,a、b、c的值分别为10、40、30,p1、p2、p3、p4分别指向a、b、c、a的地址。

总结

本文介绍了C语言中指针基础问题12,通过该问题的分析和解答,可以进一步加深对C语言指针及其操作的理解。对于新手来说,指针操作可能有些难以理解,但是只要多加实践和实践,加强对指针的掌握,就能逐渐掌握指针的基本操作。