【发布时间】:2015-04-22 10:35:44
【问题描述】:
这段代码有什么问题?
void input(int *nmbrOfUnits);
int main() {
int *nmbrOfUnits;
input(nmbrOfUnits);
}
void input(int *nmbrOfUnits) {
printf("numnber if units: ");
scanf(" %d", nmbrOfUnits);
}
edit:该变量是在 main 中创建的,这意味着如果 main 调用输入该变量不会从堆栈中弹出。为什么要在堆上分配它? 我传递一个指针并在scanf中使用它。为什么会出现分段错误?
【问题讨论】:
-
这不是java。 ;-)
-
@2501 - 我应该深拷贝吗:-p
-
尝试:scanf(" %d", &nmbrOfUnits);函数 scanf 需要一个指向将写入用户输入数据的变量的指针! (这个我说错了……我不看你的代码很好!)
-
@SergioFormiggini ,
nmbrOfUnits是一个指针。 -
@SergioFormiggini;不,指针指向一个随机位置。
标签: c pointers segmentation-fault