1. 程式人生 > >指標值傳遞問題

指標值傳遞問題




typedef struct gpio {
	char *test;
} gpio_t;
全部都是值傳遞
void  func(char *test)
{
    test = malloc(4);  //這是區域性變數的malloc,不會傳出去
}

void  functest(char **test)
{
    *test = malloc(4);  //地址傳遞,這樣就能傳出去
}

void  funcfunc(char *test)
{
    int i = 0;
    for( i = 0; i < 4; i++)
    {
        test[i] = i;
     }
}
int main()
{
    gpio_t g;
    func(g.test);      //值傳遞,錯誤
    functest(&(g.test));   //地址傳遞,可以

    g.test = malloc(5);
    funcfunc(g.test);   //值傳遞,可以
}