c语言允许直接访问内存地址是否正确,没有在c语言中分配,访问内存空间是否有任何问题...

本问题已经有最佳答案,请猛点这里访问。

#include

main()

{

int *p,i;

p = (int*)malloc(sizeof(int));

printf("Enter:");

scanf("%d",p);

for(i=1;i<3;i++)

{

printf("Enter");

scanf("%d",p+i);

}

for(i=0;i<3;i++)

{

printf("No:%d

",*(p+i));

}

getch();

return 0;

}

在这个C程序中,内存是在没有分配的情况下访问的。程序工作。如果没有分配就访问内存会出现什么问题?如果是,那么存储大小未提前知道的整数数据集合的解决方案是什么?

我的内心要求我补充一点:你读过手册了吗? 如果没问题,为什么malloc()需要一个参数来指定大小? 为什么你甚至期望这个工作?

当你说程序"有效"时,你的意思是什么? 你的意思是它做了你期望它做的事情吗? 如果是这样,你期望它做什么以及为什么?

您的代码显示未定义的行为,因为p的分配大小为一个int,但正在使用它,就像它是一个四个int的数组一样。 当行为未定义时,任何结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值