c语言在函数传递时常常使用如下的形式。
 void get(int **p)

对于这个形式,我想过为什么不能够使用 *p 作为形参呢。下面我们看一下代码和执行结果

 void get(int **p)
 {
     printf("%p\n",*p);
     *p = ();
     printf("%p\n",*p);
 }

 int main()
 {
     int *ptr = NULL;
     printf("%p\n",ptr);
     get(&ptr);
     printf("%p\n",ptr);
     ;
 }

由这个结果可以看出一开始ptr初始化为NULL,后面经过get()函数以后ptr的指针为00511448,包括后面的函数退

出以后ptr的值也是00511448 。但是下面指传入指针的结果相比较,我们就可以发现问题了。

 void get(int *p)
 {
     printf("%p\n",p);
     p = ();
     printf("%p\n",p);
 }

 int main()
 {
     int *ptr = NULL;
     printf("%p\n",ptr);
     get(ptr);
     printf("%p\n",ptr);
     ;
 }

在上面的结果看出来,函数结束以后,ptr的值为00000000了,不再和上面的结果一样。


从这里我们可以看出来问题了。传入的是指针的值,值是可以改变的。所以在后面函数结束以后ptr的值就被改变

了。如果后面我们需要用到这个指针,那么得到的结果就是错误的,是不可靠的 ;所以我们需要向函数中传递一

个地址,然后在函数结束后,内部分配的地址就依然存在并且ptr指向这个地址,可以使用。!!!!

c语言指针的指针的更多相关文章

  1. 解读 C 语言中的指针

    我想对很多学习C语言的新手来说,指针无疑是一个难点.但是,我觉得指针也是C语言特别重要的一个特性.也许,你在除了C和C++以外的编程语言中,很少看到指针.而C++中,也多用引用,而非指针.指针,作为一 ...

  2. Swift3.0语言教程使用指针创建和初始化字符串

    Swift3.0语言教程使用指针创建和初始化字符串 Swift3.0语言教程使用指针创建和初始化字符串苹果的Swift团队花了不少功夫来支持C的一些基础特性.C语言中为我们提供了指针,Swift也不例 ...

  3. C语言中的指针数组

    C语言中的指针数组是什么,像 char *a[]={"ddd","dsidd","lll"}; 这里讲一下注意如果我们使用了a也就是首元素的 ...

  4. 深入理解C语言中的指针与数组之指针篇

    转载于http://blog.csdn.net/hinyunsin/article/details/6662851     前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本 ...

  5. 【ZZ】C 语言中的指针和内存泄漏 & 编写高效的C程序与C代码优化

    C 语言中的指针和内存泄漏 http://www.ibm.com/developerworks/cn/aix/library/au-toughgame/ 本文讨论了几种在使用动态内存分配时可以避免的陷 ...

  6. 深入理解C语言中的指针与数组之指针篇(转载)

    前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本所在.相信,任意一家公司如果想要考察一个人对C语言的理解,指针和数组绝对是必考的一部分. 但是之前一方面之前一直在忙各种事情 ...

  7. C语言中的指针学习(小黑板)

    指针是C语言中的精华所在,也是C语言的危险之在,今天又重现温习了一下C语言,做了一下总结. 欢迎批阅. (1)指针的含义指针的本质也是数据类型,它是指向地址的变量.例如: { int a = 10; ...

  8. GO语言中的指针

    http://www.tizgrape.com/?p=100 Go语言中的指针语法和C++一脉相承,都是用*作为符号,虽然语法上接近,但是实际差异不小. Go使用var定义变量: var v6 *in ...

  9. 由链表初始化看C语言的二级指针

    先来看C语言创建链表.插入节点和遍历链表的一段代码: #include <stdio.h> #include <stdlib.h> typedef int ElemType; ...

  10. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

随机推荐

  1. 【Leetcode】【Medium】Triangle

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  2. windows7 端口查看以及杀死进程释放端口

    1.调出命令窗口:开始---->运行---->cmd,或者是window+R组合键 2.输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口,比如是4300 ...

  3. [EffectiveC++]item38:通过复合塑膜出has -a 或“根据某物实现出”

    Model "has-a"or “is-implemented-in-terms-of” through composition

  4. nfs 笔记

    问题:客户端在nfs文件目录下读写文件提示Permission denied: 解决方法: 修改/etc/exports 中 文件共享方式为 no_root_squash no_root_squash ...

  5. NET Core Web API下事件驱动型架构CQRS架构中聚合与聚合根的实现

    NET Core Web API下事件驱动型架构在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件 ...

  6. NGUI UILabel文字宽度和 UITweener

    做个记录 方便别人和自己以后查找. NGUI UILabel   文字宽度 高度 mLabel.GetComponent<UILabel>().getLabWidth()   mLabel ...

  7. 轮播图3D效果--roundabout(兼容IE8)升级版

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. Ajax回退刷新页面问题的解决办法

    在脚本之家看到一篇文章,觉得以后可能会用上,但是竟然不能收藏,所以只能将其转到博客园. 以下是原文地址: http://www.jb51.net/article/87856.htm   这篇文章主要介 ...

  9. 商品数量编辑按钮3D效果动画

    .move-enter-active transition:all 0.4s linear transform:rotate(180deg).move-leave-active transition: ...

  10. el表达式不显示值

    1.场景是自己搭建一个ssm的项目,登录页面跳转到首页,首页显示登录用户的信息,用request传递的值,用el表达式在jsp页面中没有显示 2.解决办法 早jsp的代码中添加头<%@ page ...