我目前正在研究一个C程序,我试图将指针作为参数传递给一个scanf
.
例:
int main() {
int *num;
scanf("%d", num);
printf("%d", *num);
}
Run Code Online (Sandbox Code Playgroud)
考虑到scanf
地址中存储值的典型传递,我不明白为什么它不能存储指针所保存的地址.我尝试运行此代码块时收到内存错误.可能是什么问题?
R S*_*ahu 10
只有在num
指向有效内存时才能这样做.
// Not OK
// Leads to undefined behavior since num does not point
// to anything valid.
int* num;
scanf("%d",num);
Run Code Online (Sandbox Code Playgroud)
// OK
int* num = malloc(sizeof(*num));
scanf("%d",num);
Run Code Online (Sandbox Code Playgroud)
// Also OK
int i;
int* num = &i;
scanf("%d",num);
Run Code Online (Sandbox Code Playgroud)