• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言安全编码之数值中的sizeof操作符

C语言安全编码之数值中的sizeof操作符

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言sizeof,c语言sizeof函数,c语言sizeof用法,c语言中sizeof,c语言sizeof什么意思等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

通常来说获取数组的长度时不要对指针应用sizeof操作符。

现来看看下面这段代码:

void clear(int array[]) {
  for(size_t i = 0; i < sizeof(array) / sizeof(array[0]); i++) {
    array[i] = 0;
  }
}
void dowork(void) {
  int dis[12];
  clear(dis);
  /*...*/
}

</div>

clear()使用sizeof(array) / sizeof(array[0])这种用法确定这个数组的元素数量,但由于array是一个形参,因此它是指针类型,sizeof(array) = sizeof(int *) = 4  (32位OS)

当sizeof操作符应用于声明为数组或函数类型的形参时,它会产生经过调整的(指针)类型的长度

对此问题的解决方案如下:

void clear(int array[], size_t len) {
  for(size_t i = 0; i < len; i++) {
    array[i] = 0;
  }
}
void dowork(void) {
  int dis[12];
  clear(dis, sizeof(dis) / sizeof(dis[0]));
  /*...*/
}
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言位运算和sizeof运算符详解
  • C语言中sizeof()与strlen()函数的使用入门及对比
  • C语言中的sizeof操作符用法及和strlen的区别
  • C语言中关于sizeof 和 strlen的区别分析
  • C语言安全编码之数值中的sizeof操作符
  • 对C语言中sizeof细节的三点分析介绍
  • 浅析C语言中的sizeof
  • 解析一个有关sizeof用法的题目--sizeof(i++)
  • 解析sizeof, strlen, 指针以及数组作为函数参数的应用
  • 基于Sizeof与Strlen的区别以及联系的使用详解

相关文章

  • 2017-05-28解析C++编程中异常相关的堆栈展开和throw()异常规范
  • 2017-05-28pthread_cond_wait() 用法深入分析
  • 2017-05-28C++的template模板中class与typename关键字的区别分析
  • 2017-05-28深入理解Java事务的原理与应用
  • 2017-05-28深入C++中struct与class的区别分析
  • 2017-05-28成员初始化列表与构造函数体中的区别详细解析
  • 2017-05-28基于C中含有if的宏定义详解
  • 2017-05-28Qt之ui在程序中的使用-多继承法介绍
  • 2017-05-28使用WindowsAPI实现播放PCM音频的方法
  • 2017-05-28C++中可正确获取UTF-8字符长度的函数分享

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 详解数据结构C语言实现之循环队列
    • c++ 连接两个字符串实现代码 实现类似strcat功能
    • 原创的C语言控制台小游戏
    • 深入Main函数中的参数argc,argv的使用详解
    • 一些C语言中字符串的算法问题解决实例小结
    • C++ read函数读入int整形数据
    • C语言中条件编译详解
    • c语言实现顺序表的基本操作
    • Protocol Buffer技术深入理解(C++实例)
    • 解析四则表达式的编译过程及生成汇编代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有