(转)sizeof()和_countof()
(转)sizeof()和_countof()
先看程序: #include <iostream> using namespace std; int main(int argc, char* argv[]) { char *a = "abcde"; char sz1[] = "abc"; char sz2[] = {"abc"}; char sz3[] = { 'a', 'b', 'c' }; printf_s( "%d %d %d %d", _sizeof(a), _countof(sz1), _countof(sz2), _countof(sz3) ); cout<<endl; int b[] = {1,2,3}; cout<<sizeof(b)<<" "<<_countof(b)<<endl; return 0; } 程序输出:4 4 4 3 12 3 *************************************************************************** _countof 是 C++中计算一个固定大小数组长度的宏,比如: T arr[10]; for( size_t i = 0; i<_countof(arr); --i ) do_something(); 对于固定大小数组计算起来非常方便。 /* _countof helper */ 用宏计算的方式容易理解,但是编译期语法检查不够严格。C++中使用了比较严格的语法,确保传入的参数是固定数组。 C++采用type_traits的方式来提取给定数组的信息,通过一个模板函数来完成这个操作: __countof_helper(UNALIGNED _CountofType (&_Array)[_SizeOfArray]) 函数来提取_Array的信息: 参数为_Array的引用,保证传入参数必须为固定数组,类型为_CountofType, 大小为_SizeofArray. 返回值为: char (*Arr)[_SizeofArray];指向大小为_SizeofArray 的char类型的数组的指针。 |
(转)sizeof()和_countof()的更多相关文章
- (转)sizeof()和_countof()区别
先看程序: #include <iostream> using namespace std; int main(int argc, char* argv[]) { char *a = &q ...
- 【九度OJ】题目1096-二分查找
题目1069:查找学生信息 这篇文章中提到的问题主要是由于调试平台Visual Studio和测试平台Online Judge的一些小差异,造成在Visual Studio中调试通过的代码,在输入OJ ...
- fscanf_s与scanf_s的宽度参数与缓冲区参数分析
fscanf_s函数 在文件操作中经常会用到fscanf这个函数,但是在VC和VS中会有警告 意思是编译器觉得fscanf不安全,叫你考虑用一下fscanf_s这个函数来代替fscanf,fscanf ...
- sscanf 与 sscanf_s
sscanf 与 sscanf_s 之间的Details sscanf sscanf函数想必大家用的很熟练吧 sscanf函数原型: sscanf(const char* src,format,... ...
- 【C++】sprintf 与sprintf_s
(转自: http://blog.sina.com.cn/s/blog_4ded4a890100j2nz.html) 将过去的工程用VS2005打开的时候.你有可能会遇到一大堆的警告:warning ...
- sizeof _countof _tcslen的比较
sizeof ----用于计算数组或其他对象的大小,以字节为单位,含\0结束符. _countof----一个宏,用于计算数组的实际元素个数 ,含\0结束符: _tcslen----c++求数组长度的 ...
- 读懂_countof,可以懂得什么
在c++开发中数组是我们经常使用存储结构,而于此同时"数组越界"是每个c++程序员不能不提防陷阱. 还好,我们有预定义宏_countof. 一.在visual c++开发环境下,它 ...
- 聊聊 C 语言中的 sizeof 运算
聊聊 sizeof 运算 在这两次的课上,同学们已经学到了数组了.下面几节课,应该就会学习到指针.这个速度的确是很快的. 对于同学们来说,暂时应该也有些概念理解起来可能会比较的吃力. 先说一个概念叫内 ...
- c/c++中关于sizeof、strlen的使用说明
sizeof: 一般指类型.变量等占用的内存大小(由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小) strlen: c字符串的长度(参数必须是字符型指针 char*,当数组名作 ...
随机推荐
- java mybatis学习二
<select id="find1" parameterType="java.util.HashMap" resultType="com.xxx ...
- [转] docker基础知识之挂载本地目录
[From] https://blog.csdn.net/huludan/article/details/52641090 https://my.oschina.net/piorcn/blog/324 ...
- nginx 服务器配置文件指令
localtion 配置 语法结构: location [ = ~ ~* ^~ ] uri{ ... } uri 变量是带匹配的请求字符, 可以是不含正则表达的字符串, ...
- shell 实现文件改名
修改文件名可以有不同的命令方式,mv 可以实现,但是使用rename 这种专业的改名字很好 对于单个的文件,可以直接使用以上的命令,那如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢? 创建 ...
- shell 进阶之匹配字符串
一,操作字符串 1,字符串长度 expr 命令取字符串函数 自带shell函数读取 2,匹配字符串开头字串的长度 !!!!!!!!!!!!$substring是正则表达式.!!!!!!!!! ...
- C. Molly's Chemicals
题目链接:http://codeforces.com/problemset/problem/776/C C. Molly's Chemicals time limit per test 2.5 sec ...
- 60分钟内从零起步驾驭Hive实战学习笔记(Ubuntu里安装mysql)
本博文的主要内容是: 1. Hive本质解析 2. Hive安装实战 3. 使用Hive操作搜索引擎数据实战 SparkSQL前身是Shark,Shark强烈依赖于Hive.Spark原来没有做SQL ...
- unity摄像机脚本
直接挂载在摄像机上面即可 1.摄像机自由平移 using UnityEngine; using System.Collections; /// <summary> /// 摄像机视角自由移 ...
- 简单的 shell 脚本 切分日志
为避免日志过大,需要按天分割日志,定时计划任务脚本如下: /data/shell/backup_yesterday_nginx_log.sh declare logs_path="/data ...
- js event鼠标事件
1,鼠标焦点事件 <!DOCTYPE html><html lang="en"><head> <meta charset="UT ...