繁体   English   中英

将双指针作为函数参数传递

[英]Passing double pointer as function argument

我只是想通过该函数将指针分配给另一个指针(相同的内存地址)。 我的代码如下:

#include <stdio.h>

void d(int** a)
{
    int* val_ptr = malloc(1);
    *val_ptr   = 5;
    printf("%d\n", *val_ptr);

    a = &val_ptr;
}

int main()
{
    int* a = NULL;
    d(&a);
    printf("%d\n", *a);
    return 0;
}

链接输出

5
Segmentation fault

您的代码有三个问题:

  1. 这里int* val_ptr = malloc(1); ,您分配1个字节而不是为int分配空间。 使用以下内容修复它:

     int* val_ptr = malloc(1 * sizeof(int)); 
  2. 这个a = &val_ptr; 不是你想要的。 它更改本地指针,并使其指向val_ptr的地址。 不会影响您在main定义的指针。

    使用修复

     *a = val_ptr; 

    这样,在指针main也将反映这种变化,并会指向malloc版内存

  3. 使用分配的内存后,应free它。

     free(a); 

    main中释放printf之后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM