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 */
#if !defined(_countof)
#if !defined(__cplusplus)
#define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0]))
#else
extern "C++"
{
template <typename _CountofType, size_t _SizeOfArray>
char (*__countof_helper(UNALIGNED _CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];
#define _countof(_Array) sizeof(*__countof_helper(_Array))
}
#endif
#endif

用宏计算的方式容易理解,但是编译期语法检查不够严格。C++中使用了比较严格的语法,确保传入的参数是固定数组。

C++采用type_traits的方式来提取给定数组的信息,通过一个模板函数来完成这个操作:

__countof_helper(UNALIGNED _CountofType (&_Array)[_SizeOfArray]) 函数来提取_Array的信息:

参数为_Array的引用,保证传入参数必须为固定数组,类型为_CountofType, 大小为_SizeofArray.

返回值为: char (*Arr)[_SizeofArray];指向大小为_SizeofArray 的char类型的数组的指针。

sizeof()与_countof()用法相关推荐

  1. sizeof函数的用法

    sizeof函数的用法: 1.sizeof()函数是用来计算变量所占内存空间的大小,单位是字节(byte) 举例如下: #define _CRT_SECURE_NO_WARNINGS #include ...

  2. C++ sizeof 操作符的用法总结

    在VC中,sizeof有着许多的用法,而且很容易引起一些错误.下面根据sizeof后面的参数对sizeof的用法做个总结. A.参数为数据类型或者为一般变量: 例如sizeof(int),sizeof ...

  3. sizeof,strlen用法详解

    sizeof 前向声明: sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着"辛苦我一个,幸福千万人"的伟大思想,我决定将其尽可能详细的总结一下. 但 ...

  4. c语言中sizeof函数的作用是,c语言中sizeof函数的用法

    C语言sizeof函数如何使用? 怎样利用sizeofCSS布局HTML小编今天和大家分享各种数据类型占用的字节数? (1)sizeof不是函数,它只是一个操作符(operator). (2)size ...

  5. c语言中sizeof函数的用法,sizeof函数怎么用 sizeof函数的使用方法

    sizeof函数是pascal语言当中的一种内存容量度量的函数,这一个函数计算得到的结果是返回一个变量或者一个类型的大小;在c语言当中,sizeof函数这是一个能够判断数据类型,或者是表达式长度的一个 ...

  6. C++ sizeof用法总结

     sizeof sizeof操作符的作用是返回一个对象或类型名的长度,长度的单位是字节. 返回值的类型是标准库命名为size_t的类型,size_t类型定义在cstddef头文件中,该头文件是C标 ...

  7. C语言sizeof用法

    sizeof 关键字的用法 sizeof给我们的印象就是像一个函数一样,可以传进去参数,也有一个返回值,但是他的本质呢,不是一个函数,而是: sizeof是编译器的内置指示符 sizeof用于计算类型 ...

  8. sizeof用法详解

    一.sizeof是什么 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.–等.它并不是函数.sizeof操作符以字节形式给出了其操作数的存储大小.操作数可以是一个表达式或括在括号内的类 ...

  9. C++ sizeof用法

    sizeof操作符的作用是返回一个对象或类型名的长度,长度的单位是字节. 返回值的类型是标准库命名为size_t的类型,size_t类型定义在cstddef头文件中,该头文件是C标准库的头文件stdd ...

最新文章

  1. AI4U:以用户友好为目标,智源重大研究方向“机器学习”学者候选人发布
  2. linux 内核 同步机制
  3. 如何让你的 JS 写得更漂亮,看这篇就对了!
  4. Fedora12上编译安装gdb-7.2
  5. RSYNC及其算法简单介绍
  6. 调整KDevelop字体大小
  7. Linux下OneinStack一键安装JAVA+PHP+Tomcat+Nginx+MySQL网站环境
  8. hdu 2896 AC自动机
  9. socket简介 - 获取简单网页内容
  10. Java获取字符串长度(length())
  11. Oracle LOB 详解
  12. 分享sina的短链生成java代码
  13. 交互设计指南 iphone_交互设计:角色创建指南
  14. 如何读写一篇优秀的计算机论文
  15. python设置时间过期改变状态_将Python程序设置为在特定天数后过期
  16. c如何将数组初始化为0?
  17. 磁盘磁带光盘是计算机系统中,磁盘、磁带和光盘是计算机系统中最常用的( )
  18. matlab表示sa函数,SA:T1编写主函数法和T2Matlab自带的SA工具箱GUI法,两种方法实现对二元函数优化求解——Jason niu...
  19. 丹佛斯冷媒尺汉化下载_下载适用于Android的冷媒尺 Refrigerant Slider - Appszoom
  20. 45 周岁、IPIP 的七年之痒与最坏打算~

热门文章

  1. IEEE JBHI 投稿因格式问题打回记录
  2. react基础学习记录一
  3. redhat7 常用命令
  4. IE6下Png透明最佳解决方案(推荐) Unit PNG Fix
  5. install lsa package for R on ubuntu 10.04 lts lucid
  6. 一种快速部署开发用oracle的办法
  7. jenkins X 和k8s CI/CD
  8. 数据库表在join时的三种方式
  9. [转]小程序web-view组件
  10. 提高你css技能的css开发技巧