文章插图
在 C/C++ 中 , sizeof() 是一个判断数据类型或者表达式长度的运算符 。
1 sizeof 定义sizeof 是 C/C++ 中的一个操作符(operator) , 返回一个对象或者类型所占的内存字节数 。
The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including aggregate types). This keyword returns a value of type size_t. ——来自MSDN其返回值类型为 size_t , 在头文件 stddef.h 中定义为: typedef unsigned int size_t;
从sizeof 的定义可以看出:sizeof 不是一个函数 , 因为函数调用必须有一对括号 。
#include <stdio.h>//公众号:C语言与cpp编程int main(void){ int num = 97; printf("sizeof(num = 0)的值:%dn",sizeof(num = 0)); printf("num 的值:%dn",num); return 0;}
文章插图
运行结果为4 , 97;并不是4 , 0
说明:sizeof 不是标准意义上的一元操作符 , 不支持链式表达式 , sizeof 作用域范围内的语句不会编译成机器码 , 如 sizeof(num++) 中的 ++ 不执行 。sizeof 也不是函数 , sizeof 更像一个特殊的宏 , 在编译阶段求值 。
2 sizeof 用法sizeof 有两种语法形式 , 如下:
sizeof(type_name); //sizeof(类型);sizeof (object); //或sizeof object 都属于 sizeof对象;
所以:int i;sizeof(i); //合理sizeof i; //合理sizeof(int); //合理sizeof int; //不合理
- 对类型使用 sizeof 时 , sizeof type_name 是非法的 , 必须写为 sizeof(type_name);
- 无论是对对象还是类型取值 , sizeof () 这种形式都是对的;
由于它们的内存大小是和系统相关的 , 所以在不同的系统下取值可能不同 。
#include <IOStream>using namespace std; int main(){ cout << "Size of char : " << sizeof(char) << endl; cout << "Size of int : " << sizeof(int) << endl; cout << "Size of short int : " << sizeof(short int) << endl; cout << "Size of long int : " << sizeof(long int) << endl; cout << "Size of float : " << sizeof(float) << endl; cout << "Size of double : " << sizeof(double) << endl; cout << "Size of wchar_t : " << sizeof(wchar_t) << endl; return 0;}
在 32 位系统下内置数据类型与其 sizeof 运算结果如下:Size of char : 1Size of int : 4Size of short int : 2Size of long int : 4Size of float : 4Size of double : 8Size of wchar_t : 4
- unsigned 不影响内置类型 sizeof 的取值
char *p =”hello”; sizeof( p ); // 结果为4 sizeof(*p); // 结果为1 int *pi; sizeof( pi ); //结果为4 sizeof(*pi); //结果为4 char **pp = &p; sizeof( pp ); // 结果为4 sizeof( *pp ); // 结果为4
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Java开源框架之SpringMVC原理及源码解析
- C++构造函数的三种写法
- 外包面试之旅
- 苦尽甘来茶道人生,茶道之真饮茶之人要怀有颗真心
- 行走茶山之寻找革登茶,革登茶山
- PLC编程语言之争:谁才是"一哥"
- 大英博物馆的镇店之宝 大英博物馆三大镇馆之宝
- 宇宙生命之谜提出问题并解决 宇宙生命之谜主要讲述了什么没有生命存在的原因
- 中国历史上夏朝之前是什么朝代 夏朝之前还有什么朝代
- 夏威夷火山喷发视频 夏威夷火山之谜