可以在C编程中将指针传递给scanf参数吗?

时间:2016-03-18 21:29:42

标签: c printf scanf

我目前正在开发一个C程序,我试图将指针作为参数传递给scanf

示例:

int main() { 
    int *num;
    scanf("%d", num);
    printf("%d", *num);
}

考虑到典型的scanf在地址中传递以存储值,我不明白为什么它不能存储指针所保存的地址。我尝试运行此代码块时收到内存错误。可能是什么问题?

1 个答案:

答案 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);