有一个 C 代码,我想知道哪里有问题。
int main() {
// PART A
int a = 12;
printf("%p\n", &a);
int *ptr = &a;
*ptr = 15;
printf("%i\n", a);
// PART B: something bad starts
ptr = (int*)12;
*ptr = 42;
printf("%i\n", *ptr);
}
在第 (B) 部分中,为什么 ptr = (int*)12 和 *ptr = 42 在 C 中是错误的编程?
最佳答案
问题是:
ptr = (int*)12; // This will assign memory address 0x0000000C (12) to ptr
你试图在不知道指针是否存在的情况下将内存地址分配给它。程序可能会在这里崩溃。
还有:
printf("%f\n", &a);
← 应该是 "%p"
关于c - 为什么 ptr = (int*)12 和 *ptr = 42 在 C 中是错误的编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29593182/