C语言 指向指针的指针

C语言指向指针的指针是一种高级的指针类型,也称为二级指针。它可以通过指向指针的指针来实现多级指针操作,用于处理多层嵌套的数据结构,如链表、树等。下面是指向指针的指针的使用攻略。

  1. 声明指向指针的指针

在使用指向指针的指针时,需要先声明它们的类型和名称。指向指针的指针的类型为int **p,其中**表示指向指针的指针。

示例代码:

int **p;
  1. 给指向指针的指针赋值

给指向指针的指针赋值时,需要先分配空间,并将指针的地址存储到指向指针的指针中。

示例代码:

int *p1 = NULL;
int **p2 = NULL;
p1 = (int*)malloc(sizeof(int));
*p1 = 10;
p2 = &p1;
printf("p1 value is %d\n", *p1);
printf("p2 value is %d\n", **p2);

解析代码:首先,声明一个int类型的指针p1和一个指向指针的指针p2,并将它们的值都初始化为NULL。接着,调用malloc函数为p1分配内存空间,并将10存储到此空间中。然后,将指针p1的地址存储到p2中。最后,通过*p1**p2分别访问p1p2指向的变量的值,并将它们输出到控制台上。

输出结果:

p1 value is 10
p2 value is 10
  1. 通过指向指针的指针修改指针指向的变量的值

通过指向指针的指针可以修改指针指向的变量的值,需要使用两个*运算符来进行间接引用。

示例代码:

int *p1 = NULL;
int **p2 = NULL;
p1 = (int*)malloc(sizeof(int));
*p1 = 10;
p2 = &p1;
**p2 = 20;
printf("p1 value is %d\n", *p1);
printf("p2 value is %d\n", **p2);

解析代码:首先,声明一个int类型的指针p1和一个指向指针的指针p2,并将它们的值都初始化为NULL。接着,调用malloc函数为p1分配内存空间,并将10存储到此空间中。然后,将指针p1的地址存储到p2中。接着,通过**p2p1指针指向的变量的值修改为20。最后,通过*p1**p2分别访问p1p2指向的变量的值,并将它们输出到控制台上。

输出结果:

p1 value is 20
p2 value is 20

以上就是指向指针的指针的完整使用攻略,通过实例来讲解,相信可以更好的理解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言 指向指针的指针 - Python技术站

(0)
上一篇 2023年5月9日
下一篇 2023年5月9日

相关文章

  • 关于C++的.cpp文件运行全过程

    C++是一种高级别的编程语言,其源代码需要经过编译器的编译和链接过程,才能转化为可以运行的可执行文件。下面是C++的.cpp文件运行全过程的完整攻略: 1. C++代码编写 C++代码需要用到文本编辑器进行编写,常见的文本编辑器有Visual Studio Code、Sublime Text、Atom等。编写代码时需要注意遵循C++的语法规则,可以使用函数、…

    C 2023年5月23日
    00
  • CCleaner怎么关闭自动更新?CCleaner关闭自动更新方法

    当你安装CCleaner之后,它默认会启用自动更新功能,这意味着即使你不手动检查更新,它也会在后台自动下载并安装新版本的CCleaner。对于一些用户来说,这可能不是一个理想的操作行为。那么,如何关闭CCleaner自动更新呢?下面是详细的步骤。 方法一:通过CCleaner程序关闭自动更新 打开CCleaner程序,点击左下角的“选项”按钮。 切换到“设置…

    C 2023年5月23日
    00
  • 在c和c++中实现函数回调

    在C和C++中实现函数回调,需要用到函数指针;函数指针是将函数的入口地址存放在指针变量中,可以通过指针来间接调用函数。 以下是实现函数回调的步骤: 声明一个函数指针类型,以便后续能实现复用: c++typedef void(*CallbackFunction)(int); 上面的代码定义了一个函数指针类型CallbackFunction,该函数指针可以指向一…

    C 2023年5月23日
    00
  • C语言实现简单班级成绩管理系统

    C语言实现简单班级成绩管理系统 本文将详细讲解如何使用C语言实现班级成绩管理系统,包括创建数据结构、实现各种功能以及存储数据等。下面将详细介绍具体的步骤。 步骤一:创建数据结构 首先,要创建一个数据结构来存储学生的信息。这个数据结构应该包含以下信息: 学生ID 学生姓名 数学成绩 语文成绩 英语成绩 平均分 例如,可以使用以下代码来创建这个数据结构: str…

    C 2023年5月23日
    00
  • 详解Python3.1版本带来的核心变化

    详解Python3.1版本带来的核心变化 Python3.1版本带来了许多核心变化,这些变化让Python语言变得更加高效、易于使用,并改进了在大型项目中的工作效率。以下是其中的两项核心变化: 1. 简化和增强了多线程编程的操作 Python3.1引入了一个名为”concurrent.futures”的新模块,这个模块的设计旨在简化多线程编程的操作。在这个模…

    C 2023年5月22日
    00
  • C语言实现推箱子游戏完整代码

    非常感谢您对于 C 语言实现推箱子游戏的关注! 推箱子游戏是一款非常经典的益智游戏,本文将完整讲解 C 语言实现推箱子游戏的攻略。 步骤一:准备工作 为了让代码更加简洁,我们需要引入外部库文件,本文使用的库文件为 <stdio.h> 与 <conio.h>,其中 <stdio.h> 是 C 语言的标准输入输出库, <…

    C 2023年5月30日
    00
  • C++如何判断一个数是不是素数

    当然,作为一个网站的作者,我很乐意为你提供详细的攻略。 在C++中判断一个数是否是素数,通常有两种方法:暴力枚举和筛法。 暴力枚举 暴力枚举是一种较为简单的方法,即对于一个数n,将n分别除以2,3,4,…,n-1,判断它是否能除尽这些数。若一旦出现n%i==0,则说明n不是素数。 暴力枚举的代码实现如下: bool isPrime(int n) { if…

    C 2023年5月23日
    00
  • Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)

    下面我将详细讲解“Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)”这个话题。此话题包括以下三个部分: Json对象和字符串互相转换 Json数据拼接 Json使用方式详细介绍 1. Json对象和字符串互相转换 在JavaScript中,我们可以使用JSON.stringify()方法将一个JavaScript对象序列化成一个…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部