• 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的返回的地址值,是一个指针,如果这个时候形参是指针类型,那么形参在函数中的操作都是同级别类型操作,不能传递。

  • 相关阅读:
    【动态规划】01背包问题
    【Huffman&&贪心】Fence Repair(POJ 3253)
    【STL学习】priority_queue
    【贪心算法】特殊的密码锁(openjudge8469)
    【贪心+二分】疯牛
    用类模板封装链表
    Qt的QString和C++string之间的转换
    Qt模态对话框和非模态对话框
    常见的交换变量的三种方法
    整理的经典面试题及各种库函数的自己实现
  • 原文地址:https://www.cnblogs.com/jsgnadsj/p/5677708.html
Copyright © 2020-2023  润新知