有一个函数
void a(int **buf){...}
函数体内有(int*)malloc(1024*sizeof(int))的语句。一个高手告诉我如果想把malloc的空间的地址传出去,需要一个int **buf指针来接收,请问是为什么啊?

解决方案 »

  1.   

    c语言里传递什么参数就不能改什么参数,
    比如你传值,就不能改值,要在过程中把值改了,必须传递地址。
    同样,你传一个指针,就不能再过程中把指针改了(把malloc的返回值赋值给参数指针),只能再间址一次
      

  2.   

    int test(int myint)
    {
       myint = 5;
    }int  pointerTest(int *p)
    {
       p = malloc(1000);
    }int main(int argc, char** argv)
    {
        int myint2 = 5;
        test(myint2);
        // myint2的值是不变的    int *p = 0;
        pointerTest(p);
        // p还是空指针
    }
      

  3.   

    那么请问是*p=(int*)malloc(1024*sizeof(int))的形式吗?