我目前正在开发一个C程序,我试图将指针作为参数传递给scanf
。
示例:
int main() {
int *num;
scanf("%d", num);
printf("%d", *num);
}
考虑到典型的scanf
在地址中传递以存储值,我不明白为什么它不能存储指针所保存的地址。我尝试运行此代码块时收到内存错误。可能是什么问题?
答案 0 :(得分:10)
只有当num
指向有效内存时,才能执行此操作。
// Not OK
// Leads to undefined behavior since num does not point
// to anything valid.
int* num;
scanf("%d",num);
// OK
int* num = malloc(sizeof(*num));
scanf("%d",num);
// Also OK
int i;
int* num = &i;
scanf("%d",num);