为什么在这个简单的例子中传递一个简单的指针不起作用

时间:2013-06-05 19:41:51

标签: c pointers void-pointers

为什么修改ptr没有效果 在矢量? 我试图通过f函数改变价值。

void f(int *ptr, int size, int value){
    ptr=(int* )malloc(sizeof(int));
    if(ptr!=NULL){
        int i;
        for(i=0;i<size;i++)
            *(ptr + i) = value;
        }

}

int main (void)
{
  int *vector = NULL;
  f(&vector, 3, 324);
    printf("%p\n", vector);

}

1 个答案:

答案 0 :(得分:5)

您要将malloc的结果分配给参数ptr,这是本地的。您应该将其指定为ptr 指向

void f(int **ptr, int size, int value)
{
  *ptr = (int*)malloc(sizeof(int) * size);
  // Rest of code
}