【发布时间】:2015-06-26 11:10:51
【问题描述】:
我有一个函数 f1 需要 void 指针。从调用者那里,我想要将 void 指针传递给 A 的通用逻辑,它会在内部修改指针。
示例代码粘贴在下面:
#include "stdio.h"
#include "malloc.h"
void f1(void* a)
{
printf("f(a) address = %p \n",a);
a = (void*)(int*)malloc(sizeof(int));
printf("a address = %p \n",a);
*(int*)a = 3;
printf("data = %d\n",*(int*)a);
}
void f(void)
{
void* a1=NULL;
printf("a1 address = %p \n",a1);
f1(a1);
printf("a1 address = %p \n",a1);
printf("Data.a1 = %d\n",*(int*)a1);
}
int main()
{
f();
}
但它会导致分段错误。有没有什么方法可以在不改变f1函数原型的情况下让它工作?
【问题讨论】:
-
我看到有人将
void *转换为int *或float *之类的东西,以获取malloc()的返回值,但你...void *->int *-> @ 987654332@?为什么? -
为什么这会得到如此多的支持?这只是另一个“我没有费心去查找价值传递意味着什么”的问题……
-
@TheParamagneticCroissant 可能与this question 得到的原因相同。 ....叹息.... :-|
标签: c