二级指针补充

  昨天对于分享了一些关于二级指针的见解,但是我感觉还是要对其在进行补充一下比较好,当时我在二级指针这方面迷糊了很久,即使是现在有时候也会犯迷糊;

  当初我学二级指针的时候认为,一级指针必须指向了一个内存空间后才可以将它分配给一个二级指针;  

  也就是这样的:

  {

    int a;

    int *b = NULL;

    int **c = NULL;

    b = &a;

    c = &b;

  }

  刚开始我认为如果b不指向a 的空间,则不能建立一个二级指针指向他,也就是我当时认为,二级指针是指向一级指针所指向的内存空间的;

  但是正如上次所说的那样,二级指针指向的是一级指针的空间,正是因为这样二级指针才可以操作一级指针的指向;

  这正是无法用一级指针去改变另一个一级指针的原因;

  {

    int a = 10;

    int b = 20;

    int *c = NULL;

    int *d = NULL;

    c = &a;

    d = c;//将c的指向赋给了d

    d = &b;//这里改变了d的指向是不会改变c的指向的,d指向的是b的空间,只能操作b 的空间

  }

  所以说一级指针即使指向NULL 二级指针也能指向它

  {

    int *a = NULL;

    int **b = &a;

  }

  而二级指针的作用也正是如此,可以操作一级指针的指向;

  {

    int *a  = NULL;

    int **b = NULL;

    int *c = NULL;

    b = &a;

    *b = (int *)malloc(sizeof(int));//在堆区分配空间,并通过二级指针b 控制一级指针a 指向这块内存空间

    b = &c;//这是改变了二级指针b 的指向;将它重新指向了c,这个改变不会影响 a 所指向的内存空间;

  }

  以上就是我对二级指针的一些补充,希望对大家有些帮助

时间: 2024-10-12 12:05:33

二级指针补充的相关文章

二级指针与二维数组

最近看<Linux C程序设计大全>这本书,虽然书中有一些错误,但整体来说,书写得还算可以. 当看到网络编程[第23.2.4小节 获得主机信息]时,遇到了一段代码,原文如下: “一台主机有许多和网络相关的信息,例如,主机名称.IP地址.主机提供的服务等.这些信息一般都保存在系统中的某个文件里(例如/etc/hosts等),用户程序可以通过系统提供的函数读取这些文件上的内容.Linux环境下使用gethostent函数读取和主机有关的信息,该函数的原型如下: 1 #include <net

c++中的悬浮指针和野指针 二级指针

(1) c++中的悬浮指针:声明了但没有被付值的指针,它指向内存中的任意一个空间.避免悬浮指针的一个方法是开始就付值为NULL (2)"野指针"不是NULL指针,是指向"垃圾"内存的指针.人们一般不会错用NULL指针,因为用if语句很容易判断.但是"野指针"是很危险的,if语句对它不起作用.野指针的成因主要有两种: 一.指针变量没有被初始化.任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气.所以,指针变量在创建的同

C 真正理解二级指针

本文转载自CSDN博主liaoxinmeng,做数据结构时遇到指针方面的问题,想了许久,因此我觉得很有必要复习一下二级指针及其使用 正文如下: 指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的"值,结果传递"等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的指针.....n级指针就是.... p *p **p                                      --- --- -

真正明白c语言二级指针

指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的"值,结果传递"等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的指针.....n级指针就是.... p *p **p                                      --- --- ----                                      | |->| |->| |            

C语言二级指针的介绍和使用

锄禾日当午,学C真TM苦. 指针是C语言中功能最强大的部分,但是也是最难理解的部分. 本文主要介绍二级指针的使用,包括与数组和函数结合的使用,一级指针简单带过. 一.一级指针 一级指针的简单描述 ①一级指针是一种以存储其他变量地址为目的的变量.一个T类型的指针变量(一级指针)就是一个存储了某T类型值变量的内存地址的引用. ②对指针的解引用(也就是*),是获取指针指向的内存空间中存储的值. ③当指针解引用做左值的时候,可以改变指针指向内存空间中存储的值. ④指针指向哪个变量,就将该变量的内存地址赋

(C++)函数参数传递中的一级指针和二级指针

(C++)函数参数传递中的一级指针和二级指针 主要内容: 1.一级指针和二级指针 2.函数指针传递的例子 3.什么时候需要传递二级指针? 4.二级指针在链表中的使用 1.一级指针和二级指针 一级指针:即我们一般说的指针,就是内存地址: 二级指针:指向指针的指针,就是地址的地址: 如: int a=1; int *p=&a; // p为a变量的地址,通过*p可以得到a的值 int **q=&p; // q为p指针的地址,通过**q可以得到a的值 2.函数指针传递的例子 程序1: 1 2 3

C语言参数传递(值传递、地址传递)+二级指针

参数传递 C语言参数传递一般分为:值传递和地址传递 (注意:C语言中没有引用传递,C++才有引用传递,因为很多C语言环境是用C++编译器编译,使得C看起来支持引用传递,导致很多网上很多blog都把引用传递归为C语言参数传递的一类, 当使用Microsoft Visual C++ 2010 Express或VC6之类的编译器时使用引用传递就无法编译通过) 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参) 1 #include <

二级指针做函数的输入与输出

本文将介绍二级指针做函数输出以及做函数输入的三种内存模型从内存四区的角度对程序执行的过程进行剖析,通过这中方式来加深对指针的理解. 二级指针做输出(在被调函数中分配内存)模型: 主函数: int main() { char *p = NULL; int len = 0; getMem(&p, &len); printf("p=%s\n", p); FreeMem(&p); return 0; } getMem函数: int getMem(char **myp,i

黑马程序员---C基础9【字符串的输入输出】【字符串相关函数】【指针】【指针变量初始】【二级指针】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [字符串的输入输出] 1.字符串输出: %s-------从给定的地址开始输出字符直到遇到\0停止: printf("%s\n",&a[3]);  printf("%s\n",a); char a[]="hellowo\0rd!"; 2.字符串输入: 从键盘上接收一个字符串,保存在以a为首地址的字符数组中 scanf("%s&