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

原文地址:https://www.cnblogs.com/jsgnadsj/p/5677708.html