C 多级指针

C多级指针

*p                      -----> &p1

*(*p)                   ----->*(&p1) = &p2

*(*(*p))                 ----->*(&p2) = &p3

*(*(*(*p)))               ----->*(&p3)=&p4

*(*(*(*(*p))))            ----->*(&p4)=&temp

*(*(*(*(*(*p)))))          ----->*(&temp)=temp---->8

C多级指针理解

1、指针变量存储是地址

2、理解指针声明分两部分:一部分指针变量,二部分指针变量指向的值(即:通过获取指针变量的值,这值是一个地址,通过这地址找到最终的值)

int *p;      //定义指针p存储变量地址,变量地址对应值是常量:int

int * *p;   //定义指针p存储变量地址,变量地址对应值是变量地址:int *

int ** *p   //定义指针p存储变量地址,变量地址对应值是常量地址:int **

int *** *p //定义指针p存储变量地址,变量地址对应值是常量地址:int ***

时间: 2024-08-06 05:33:01

C 多级指针的相关文章

C语言 详解多级指针与指针类型的关系

//通常意义上,指针类型指的是‘指针值’的类型,而不是‘指针’的类型 //V推论①:变量的步长只与变量的类型有关 //普通变量名是一段内存空间的标识,普通变量名代表的是一段内存空间, //对于复杂变量(例如指针):通常的指针的步长准确来说是指‘指针值’的步长,而不是指‘指针本身’的步长,指针本身的步长永远是4, //我们通常说的指针类型往往指的是‘指针值’的类型,,而不是‘指针’的类型 //而指针类型就是一个占4个字节大小内存空间的一种类型(从来没有人定义过指针类型,人们定义的都是‘指针值’的类

图解多级指针与“多维”数组

指针与数组是C/C++编程中非常重要的元素,同时也是较难以理解的.其中,多级指针与“多维”数组更是让很多人云里雾里,其实,只要掌握一定的方法,理解多级指针和“多维”数组完全可以像理解一级指针和一维数组那样简单. 首先,先声明一些常识,如果你对这些常识还不理解,那么你先去弥补一下基础知识: 1.实际上并不存在多维数组,所谓的多维数组本质上是用一维数组模拟的. 2.数组名是一个常量(意味着不允许对其进行赋值操作),其代表数组首元素的首地址. 3.数组与指针的关系是因为数组下标操作符[],比如,int

c/c++多级指针

c/c++多级指针 如图: # include <stdio.h> int main(void) { int i = 10; int * p = &i; //p只能存放int类型变量的地址 int ** q = &p; //q是int **类型, 所谓int **类型就是指q只能存放int *类型变量的地址, int *** r = &q; //r是int ***类型, 所谓int ***类型就是指r只能存放int ** 类型变量的地址, //r = &p; /

C语言优化实例:消除多级指针的间接访问

如果一个多层次的数据结构达到两级或者两级以上,举例如下: struct A{ int array_member[100]; //其他数据成员 }; struct B{ struct A *a_ptr; //其他数据成员 } 那么通过B类型的指针b_ptr访问A类型的array_member的某一个元素array_member[0]则需要使用b_ptr->a_ptr->array_member[0]这种多级指针的形式.如果一个函数中多次用到这个变量的话,可以采用一个临时变量保存这个多级指针:in

多级指针的用途

多级指针你可以看成是一个树,每个节点都可以是一个小树,想找到每层节点的时候只能通过指针偏移确定,除非你知道他们具体的各级坐标,否则无法直接定位. 举个例子strA*******  tree;这个tree其实就是个地址值,不仅如此,这个大树后面只有*******  tree 这层节点保存的值是strA结构体,其他的保存的值全是指针.就是这么多层的指针实现了这个大树,实际使用的使用的时候,要保存每一层的长度,否则无法确定他有多长呵呵. 如果你需要一个类似table的东西或者类似map的东西,或者需要

C语言多级指针的使用

话不多说,直接代码,以下是多级指针,通过指针变量修改变量的值 #include <stdio.h> #include <stdlib.h> void secondPoint(int **a, float ***f, double ****d, char *****c){ **a = 100; ***f = 9.2f; ****d = 3.14; *****c = 'g'; } int main(){ int a0 = 10; int *a = &a0; float f0 =

C语言中多级指针的重点分析

一.指针简介        指针是C语言的灵魂,C语言之所以强大,很大一部分原因在于对指针的灵活运用.我们无论需要对内存的精准分配和释放,还是对接口api的使用,乃至面向对象中的类和对象的封装,都涉及到了指针.C语言的指针大致可以分为两种,一种是作为一个变量,其保存的是一段内存地址,也就是本文要谈的多级指针:另一种是作为一种数据类型,像函数指针,用于引出一种类型,主要用于回调函数. 二.指针与基础数据类型 从内存的角度看,数据类型就是一段固定大小内存块的别名. int a=0; int在32/6

图解c/c++多级指针与多维数组

声明:本文转自 chenyang_yao ,欢迎阅读原文. 指针与数组是C/C++编程中非常重要的元素,同时也是较难以理解的.其中,多级指针与“多维”数组更是让很多人云里雾里,其实,只要掌握一定的方法,理解多级指针和“多维”数组完全可以像理解一级指针和一维数组那样简单. 首先,先声明一些常识,如果你对这些常识还不理解,请先去弥补一下基础知识: 1.实际上并不存在多维数组,所谓的多维数组本质上是用一维数组模拟的. 2.数组名是一个常量(意味着不允许对其进行赋值操作),其代表数组首元素的首地址. 3

C语言数组篇(五)多级指针和二维数组指针的区别

多级指针 以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[10] --> 10个空间的数组 * p[10] --> 这10个空间的数组里面存放的数据都是 指针型的数据 int *p[10] --> 数组里面每个指针指向的空间存放的是int型的数据 int *p[10] --> int **p; p: 指针数组的数组名,也是数组的首地址. *p 数组里面存放的指针 **p 数组里面存放的指针 指向的空间 的内容 二维数组指针: 二维数