首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将指针的地址分配给指针到指针

将指针的地址分配给指针到指针
EN

Stack Overflow用户
提问于 2019-07-15 17:04:06
回答 2查看 416关注 0票数 1

我试图使用指针来编写一段简单的c代码,但是内存被意外地覆盖了。

我想创建一个指向整数的指针数组,然后创建一个指向整数的指针,并将其地址分配给一个数组。

因此,数组将指向一个指向整数的指针。我在一个名为add_value_to_array()的函数中做到了这一点。

下面是我的代码:

代码语言:javascript
复制
void add_value_to_array(int *** array, int * value) {
    *array = &value;
}
int main() {

    int ** arr = { 0 };
    int value = 5;
    int * value_ptr =  &value;

    add_value_to_array(&arr, value_ptr);
    //arr = &value_ptr;
    printf("looool\n");
    printf("looool\n");
    printf("looool\n");
    printf("looool\n");
    printf("%p\n", arr[0]);

}

我想要的是:

代码语言:javascript
复制
arr -> value_ptr -> 5
(arr = &value_ptr
*array = value_ptr
value_ptr = &value
*value_ptr = 5
**arr = 5)

然而,这是我在调用add_value_to_array()之后立即得到的,但是当我调用printfs()时,内存被覆盖了,我在arr变量中得到了无用的值。

更奇怪的是,如果我直接arr = &value_ptr而不是调用add_value_to_array,事情就会像预期的那样进行,内存也不会被printfs()覆盖。

因此,如果我使用一个函数,或者如果我使用一个函数,或者我在它之外做事情,那么内存分配似乎是不同的。

我看到这种行为是怎么回事?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57036444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档