为什么修改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);
}
答案 0 :(得分:5)
您要将malloc
的结果分配给参数ptr
,这是本地的。您应该将其指定为ptr
指向。
void f(int **ptr, int size, int value)
{
*ptr = (int*)malloc(sizeof(int) * size);
// Rest of code
}