gpt4 book ai didi

c - 发出取消引用指针

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:04 26 4
gpt4 key购买 nike

这两个程序有什么区别:

#include <stdio.h>

int main( void )
{
int* ptr;
*ptr = 600;

printf("ptr = %d\n", *ptr );
return 0;
}

#include <stdio.h>

int main( void )
{
int* ptr = (int*) 600;

printf("ptr = %d\n", *ptr );
return 0;
}

为什么在第一个上我收到 ptr = 600,而在第二个上,我收到一个错误说程序已停止工作?

最佳答案

你的两个程序都调用了 undefined behavior .

  • 第一个,写入一个未初始化的指针。

  • 第二个,从一个可能无效的内存位置读取。 FWIW,将 int 转换为指针类型也是实现定义的行为。

解决方法:

在取消引用之前,为 ptr 分配适当的内存。

关于c - 发出取消引用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36844942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com