sizeof
一、sizeof使用的场合:
1、sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信。例如:
void* malloc(size_t size);
size_t fread(void *ptr, size_t size, size_t nmemb, FILE* stream)
2、用它可以看看某种类型的对象在内存中所占的单元字节。例如:
void *memset(void *s, int c, sizeof(s));
3、在动态分配一对象时,可以让系统知道要分配多少内存。
4、便于一些类型的扩充。在windows中很多结构类型就有一个专用的字段用来存放该类型的字节大小。
5、由于操作数的字节数在实现时可能出现变化,建议在涉及操作数字节大小时用sizeof代替常量计算。
6、如果操作数就是函数中的数组形参或函数类型的形参,sizeof给出其指针的大小。
二、sizeof不能使用的场合:
sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型等。
三、
cout<<sizeof(string*)<<endl; //
cout<<sizeof(int*)<<endl; //
cout<<sizof(char****)<<endl; // int f();
cout << sizeof(f) << endl; //编译错误
cout << sizeof(f()) << endl; // int a=;
cout << sizeof(a=) << endl; //输出4,
11 cout << a << endl; //输出6。sizeof只是个运算符,所以相当于符号替换,a=8被替换成int,并不会修改a的值。
四、
#include <iostream>
using namespace std; int Sum(int i[]) {
int sumofi = ;
for (int j = ; j < sizeof(i)/sizeof(int); j++) //实际上,sizeof(i) = 4这里数组名在形参作为指针
sumofi += i[j];
return sumofi;
} int main() {
int allAges[] = {, , , , , };
cout<<Sum(allAges)<<endl;
return ;
}
double* (*a)[][];
cout<<sizeof(a)<<endl; // 4 a为指针
cout<<sizeof(*a)<<endl; // 72 *a为一个有3*6个指针元素的数组
cout<<sizeof(**a)<<endl; // 24 **a为数组一维的6个指针
cout<<sizeof(***a)<<endl; // 4 ***a为一维的第一个指针
cout<<sizeof(****a)<<endl; // 8 ****a为一个double变量
#include <iostream> using namespace std; int main() {
char (*f)[];
int **c[][];
double *(*a)[][];
cout << sizeof(f) << endl; //
cout << sizeof(*f) << endl; //
cout << sizeof(**f) << endl; //
cout << sizeof(a) << endl; //
cout << sizeof(*a) << endl; //
cout << sizeof(**a) << endl; //
cout << sizeof(***a) << endl; //
cout << sizeof(****a) << endl; //
cout << sizeof(c) << endl; //
return ;
}
class classB {
char a;
// double b;
// int c;
virtual func1(){}
};
sizeof的更多相关文章
- 聊聊 C 语言中的 sizeof 运算
聊聊 sizeof 运算 在这两次的课上,同学们已经学到了数组了.下面几节课,应该就会学习到指针.这个速度的确是很快的. 对于同学们来说,暂时应该也有些概念理解起来可能会比较的吃力. 先说一个概念叫内 ...
- c/c++中关于sizeof、strlen的使用说明
sizeof: 一般指类型.变量等占用的内存大小(由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小) strlen: c字符串的长度(参数必须是字符型指针 char*,当数组名作 ...
- sizeof(转载)
原文地址:http://blog.sina.com.cn/s/blog_5da08c340100bmwu.html 转载至:http://www.cnblogs.com/wangkangluo1/ar ...
- C语言中的sizeof()
sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着"辛苦我一个,幸福千万人"的伟大思想,我决定将其尽可能详细的总结一下. 但当我总结的时候才发现,这个 ...
- 你必须知道的指针基础-4.sizeof计算数组长度与strcpy的安全性问题
一.使用sizeof计算数组长度 1.1 sizeof的基本使用 如果在作用域内,变量以数组形式声明,则可以使用sizeof求数组大小,下面一段代码展示了如何使用sizeof: ,,,,,}; int ...
- c++面试常用知识(sizeof计算类的大小,虚拟继承,重载,隐藏,覆盖)
一. sizeof计算结构体 注:本机机器字长为64位 1.最普通的类和普通的继承 #include<iostream> using namespace std; class Parent ...
- c语言 sizeof理解
1.基本数据类型 char :1 short:2 int 4 long 4 long long :8 float:4 double :8字节. 2.数组:对应的基本数 ...
- sizeof与strlen的区别
1 sizeof是操作符,而strlen是库函数: 2 sizeof的参数可以为任意变量或类型,而strlen必须以char*做参数,且字符串必须以‘/0’结尾: 3 数组名用作sizeof参数时不会 ...
- strlen()和sizeof()求数组长度
在字符常量和字符串常量的博文里有提: 求字符串数组的长度 标准库函数strlen(s)可以返回字符串s的长度,在头文件<string.h>里. strlen(s)的判断长度的依据是(s[i ...
随机推荐
- 【LeetCode】Counting Bits(338)
1. Description Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num ...
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(二)
一:页面静态化 几个概念: 静态网址:(比如:http://localhost/abc.html) 特点:1.利用seo(search engine optimization) 搜索引擎优化;2:访问 ...
- centos-5.5安装vmvare tools
centos-5.5安装vmvare tools 虚拟机管理,安装tools 找到VMwareTools压缩包 解压到Desktop,桌面 终端进入桌面 执行程序# ./vmware-install. ...
- MVC学习笔记1
1. Action 如果返回的是自定义的引用类型,则默认返回的是类名,其实就是调用了类的tostring方法. 2. @Html.Partial用于将分部视图渲染为字符串 @{Html.RenderP ...
- C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制
在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...
- 【C#】可空类型(Nullable)
C# 可空类型(Nullable) C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值. 例如,Nullable& ...
- 最好的Angular2表格控件
现在市面上有大量的JavaScript数据表格控件,包括开源的第三方的和自产自销的.可以说Wijmo的Flexgrid是目前适应Angular 2的最好的表格控件. Angular 2数据表格基本要求 ...
- 总结shell
总结shell里面一些初学者不容易懂得点,因为我本身就是初学者,所以有一些知识点是不容易通过字面意思理解的,下面写在这里. (便于理解的一个方法就是举例子)举个例子就是哪些容易学,哪些不容易理解:丁是 ...
- C++_系列自学课程_第_10_课_表达式_《C++ Primer 第四版》
程序设计语言中大部分程序都在进行表达式的求值操作, 例如求两个数的和,求一个表达式的逻辑结果,或者通过输入输出表达式语句进行输入和输出. 这里我们对表达式进行讨论. 一.表达式 1.表达式 表达式由一 ...
- a标签 不触发 目标链接
1. a 标签 点击时 页面回调转到href制定的页面 <a href="www.baidu.com">go to baidu</a> 2. 加上oncli ...