zoukankan      html  css  js  c++  java
  • C指针问题

    多级c指针传值问题

    多级C指针传值问题

    • 今天编写代码头晕,对于C的指针问题理解还是欠缺,记录以便复习。
    直接上代码:  
    int func(..., char **ppt)  
    {  
        //代码想通过ppt把在函数中动态申请的区域的首地址传递出去。   
        //主要是意思理解错了,所以造成困惑   
        char *pt = (char *)malloc(n*sizeof(char*));    
        for(;;)  
        {  
            //存放指针到malloc区域    
        }  
        //返回malloc地址给主程序    
        ppt = &pt;//即可    
    }
    

    不知道当时到底怎么了,没想清楚,应该是没有正确理解题意。

    • 对于这样的多级指针何时使用再啰嗦

    c中给函数传值的方式都是值传递(一般意义上的值传递,另外还有地址的传递,都是值传递),所以什么时候用指针传递是我们必须弄清楚的。
    比如:希望改变int a,a变量的内容,那么你直接传变量是不行的,你传给函数后,函数形参只会复制值,对你传递的a毫无影响,所以这个时候就要传a的地址,通过地址访问到a的值,进而修改他。
    再说:有这样一个误导,以为像改变变量的值只需要传递指针就可以了,这样的想法是不正确的。比如我们希望在函数中申请一块内存区域,并返回这块内存区域的首地址。你传递一个int * pt给函数,在函数中malloc后的地址赋值给函数形参int * fpt,这是一个地址值间的传递,fpt操作与你传递给函数的pt没有一毛钱关系,所以地址值根本没有传递出来。这个时候我们在函数里面获取的是malloc的返回的地址值,是一个指针,如果这个时候形参是指针类型,那么形参在函数中的操作都是同级别类型操作,不能传递。

  • 相关阅读:
    数组添加元素到特定位置
    jquery $().each,$.each的区别
    JSON字符串 与 JSON对象 互转
    js 获取 url 参数
    js 获取随机数 Math.random()
    js中的|| 与 &&
    js立即执行函数
    css 蒙层
    css 多行文本的溢出显示省略号(移动端)
    移动端利用-webkit-box水平垂直居中(旧弹性盒)
  • 原文地址:https://www.cnblogs.com/jsgnadsj/p/5677708.html
Copyright © 2011-2022 走看看