// 程序员宝典 71页 面试题9 自覆盖的错觉,地址也是一个数,(右端未做类型检查被赋值)

本文通过一个C++示例程序,展示了如何利用指针进行数据覆盖,并深入探讨了这种做法的风险及其背后的原因。文章重点讲解了指针操作不当可能导致的内存访问错误和程序崩溃等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 程序员宝典 71页 面试题9 自覆盖的错觉,地址也是一个数,(右端未做类型检查被赋值) 
/*
#include<iostream>
using namespace std;


  struct S {
  int i;
  int *p;
  };
  
int main()
{
S s;
int *p=&s.i;
p[0]=4;
p[1]=3;// 对指针赋值常数,成功,很危险,不做类型检查!
    cout<<s.i<<endl;
cout<<s.p<<endl;
    s.p=p;
s.p[1]=1; // s.p[1]==p[1]==s.p =1 很巧妙的自我覆盖
s.p[0]=2;// s.p[0]=1[0],访问了非法的固定地址,程序崩溃。
return 0;
}
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值