指针和二重指针

gkh 发布于 2022-06-13 14135 次阅读


当需要给地址很简单只需要一层指针即可

void give_pointer(int* point)
{
    //something
}
int main(void){
    int tar=1;
    give_pointer(&tar);
}

果是两层或者多层则没什么问题一样的

void give_pointer2(int* point)
{
    //something
}
void give_pointer(int* point)
{
    give_pointer2(point);//something
}
int main(void){
    int tar=1;
    give_pointer(&tar);
}

如果需要泛型则使用void*

void give_pointer2(void* point)
{
    //something
}
void give_pointer(void* point)
{
    give_pointer2(point);//something
}
int main(void){
    int tar=1;
    give_pointer(&tar);
}

那么要回传参数就需要思考一下了
如果只有一层

void get_pointer(int* point)
{
    *point=5;//something
}
int main(void){
    int tar=1;
    give_pointer(&tar);
}

如果有两层或者多层

void get_pointer(int** point)
{
    *point=5;//something
}
void get_pointer(int* point)
{
    get_pointer2(&point);//something
}
int main(void){
    int tar=1;
    give_pointer(&tar);
}

为什么使用void指针?
为了可以做包装,相当于一个抽象层,算是另一种形式的重载。
为了与上层的数据结构分离,不然还要做头文件的引用.
为什么一般最高只有二重指针。
对于一般变量而言(除了多维数组)只需要对指针指向的值修改或者修改这个指针就能满足需要。即修改变量数值用一重指针,修改变量指向的地址用二重指针。

此作者没有提供个人介绍。
最后更新于 2022-06-13