当前位置: 首页 > news >正文

memsetsizeof 的一些想法

  闲暇时间写了一个土鳖的程序,里面有一些自己的体会。求指正!

#include "iostream.h"
#include "string.h"
typedef struct // 这里可以没有名字
{
    int i;
    int j;
    double d;// double 8 字节 按照4位对齐的方法,这里设计数据结构的时候 还是老实一点将其设为 字节对齐的吧 刚好16

   
}Node;// 这里必须有名字哦
void main()
{
 int data[200];
 int i;
 for (i=0;i<200;i++)
 {
    cout<<*(data+i)<<endl;
 }
  memset(data,0,sizeof(data));// 使用menset初始化数组成员,代码简洁呀。

  for (i=0;i<200;i++)
  {
      cout<<*(data+i)<<endl;
  }
  cout<<"the size of data:"<<sizeof(data)<<endl;// sizeof 的威力无穷呀,真想看看它的源码,可惜看不到
  cout<<sizeof(double);
 
  // 再试试 对结构体 sizeof能给力不 嘿嘿
  Node node[100];
  for (i=0;i<100;i++)
  {
      cout<<node->d<<" "<<node->i<<" "<<node->j<<endl;
  }
  memset(node,0,sizeof(node));// 太给力了 求sizeof源码
  for (i=0;i<100;i++)
  {
      cout<<node->d<<" "<<node->i<<" "<<node->j<<endl;
  }

  // 再试试 对结构体指针 sizeof能给力不
   Node *ptr_node=node;
   cout<<"the sizeof(node) is"<<sizeof(node)<<"the size of ptr_node is"<<sizeof(ptr_node)<<endl;
   // 哈哈 不给力了吧 但是这里引导出了一个问题,这也是以前没有重视sizeof的应用的原因
   // sizeof 在处理指针(两种不同类型的,一个是独立声明的数组,它能处理,但是对于赋值而来的指针,sizeof是不起作用的
   // 这也是没有重视sizeof的原因)
  
   // 再试试sizeof对 new生成的指针 看看效果
    Node* ptr_node2=new Node[100];
    cout<<"the size is:"<<sizeof(ptr_node2)<<endl;// 求给力呀
    // 唉 没有给力成功了 不过出现了两个问题,一个是指针的占据内存的空间一直是4字节,这个,指针的优势呀
    // 还有一个就是 数组名和new以及赋值的指针 到底有木有区别 走 到内存中 去see see
       cout<<"the address of node array is:"<<node<<endl;
    cout<<"the address of node_node2 is:"<<ptr_node2<<endl;
    // 使用的是vc在调试状态下的memroy查看了一下,啥都没有,不过我想到了一个可以解释的原因
    // 指针在复制的时候,以及在new动态申请的时候操作系统不会保留相关信息,而静态的生命数组操作系统会保持 相关的信息
    // 而sizeof则正是利用了这个信息。O(∩_∩)O~

}

转载于:https://www.cnblogs.com/HappyXie/archive/2011/04/22/2025315.html

相关文章:

  • NuGet Action Plan - 更新到 1.1, 设置自动更新,获取 NuGet 包浏览器
  • IP转换整形(ip2long)
  • vs2005 如何调试wince dll
  • RabbitMQ(二)队列与消息的持久化
  • 【敏捷开发实践】宣言与原则
  • Linux下有趣的命令
  • 让dedecms(织梦)的list标签支持weight排序
  • 翻译 tiobe发布2011年5月开发语言排名
  • 研磨设计模式笔记1
  • [zt]提问的艺术
  • Dell Latitude E6400找不到Broadcom USH及Contacted SmartCard驱动
  • mongodb内存映射存储引擎
  • poj2407
  • (十一)手动添加用户和文件的特殊权限
  • 日常使用频率很高的英语口语集锦
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【EOS】Cleos基础
  • 【刷算法】求1+2+3+...+n
  • 2017-09-12 前端日报
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vim Clutch | 面向脚踏板编程……
  • 百度地图API标注+时间轴组件
  • ------- 计算机网络基础
  • 解决iview多表头动态更改列元素发生的错误
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 理解在java “”i=i++;”所发生的事情
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微服务核心架构梳理
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 7行Python代码的人脸识别
  • ionic入门之数据绑定显示-1
  • Java性能优化之JVM GC(垃圾回收机制)
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​configparser --- 配置文件解析器​
  • #if #elif #endif
  • #mysql 8.0 踩坑日记
  • $NOIp2018$劝退记
  • (145)光线追踪距离场柔和阴影
  • (C++)八皇后问题
  • (vue)页面文件上传获取:action地址
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (蓝桥杯每日一题)love
  • (十六)串口UART
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (五)IO流之ByteArrayInput/OutputStream
  • (原創) 未来三学期想要修的课 (日記)
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (轉)JSON.stringify 语法实例讲解
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .net的socket示例
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @Controller和@RestController的区别?