C++/C中 sizeof(指针)和sizeof(数组名)的区别
1、sizeof(array)/sizeof(int)的含义
array是个数组
sizeof (array)就是这个数组所占的内存总量(字节数),
sizeof(int)就是单个所占的内存. 所以呢,
sizeof (array) / sizeof (int)就是array数组的元素的个数.
2、 sizeof(指针)和sizeof(数组名)
#include <iostream>
using namespace std;
template<class T>
int length(T& data)
{ return sizeof(data)/sizeof(data[0]);
}
int main()
{int data[]={2,45,7,8,9,23,4,6,7,8,0}; int data1[12]; int *data2 = new int[13]; char *data3 = new char[10]; cout<<length(data)<<" "<<sizeof(data[0])<<" "<<sizeof(data)<<endl; cout<<length(data1)<<" "<<sizeof(data1[0])<<" "<<sizeof(data1)<<endl; cout<<length(data2)<<" "<<sizeof(data2[0])<<" "<<sizeof(data2)<<endl; cout<<length(data3)<<" "<<sizeof(data3[0])<<" "<<sizeof(data3)<<endl; return 0;
}
提到了sizeof,那什么是sizeof?
首先看一下sizeof在msdn上的定义:
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.
看到return这个字眼,是不是想到了函数?错了,sizeof不是一个函数,你见过给一个函数传参数,而不加括号的吗?sizeof可以,所以sizeof不是函数。网上有人说sizeof是一元操作符,但是我并不这么认为,因为sizeof更像一个特殊的宏,它是在编译阶段求值的。
结论:不要把sizeof当成函数,也不要看作一元操作符,把他当成一个特殊的编译预处理。
参考自https://blog.csdn.net/qq_33344148/article/details/81361325
C++/C中 sizeof(指针)和sizeof(数组名)的区别相关推荐
- c语言 数组指针,C语言数组名及指向数组指针的小结
相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针,指向函数的入口地址. 现在有这样一个问题,如果对数组名取地址,那得到的会是什么呢?很多人立刻会想到:给指针取地 ...
- CUDA中二级指针表示二级数组
首先看下我们在CPU上是如何用二级指针表示二维数组的,其实就两点:一是用一级指针保存数据,二是用二级指针去按行索引数据位置.关于一级指针和二级指针的内存分配这里不讲了,注意数据类型就可以了. 代码做了 ...
- 数组名和取数组名的区别
先来个简单的小案例 #include <stdio.h> #include <iostream>using namespace std;int main() {int a[10 ...
- c/C++计算int / int *数组的长度;sizeof(指针),sizeof(数组名)的区别
1.计算int *数组长度: int arrayVlenth(float *p) {int len = 0;while (*p){p++;len++;}return len; } sizeof(指针) ...
- sizeof(指针)和sizeof(数组)的区别
对指针利用sizeof得到的都是一个相同的值.在C语言中,指针只保存一个地址,所以任何类型的指针都占用相同的字节数. 对数组名利用sizeof得到的是整个数组占用的字节数. printf(" ...
- 类中数组成员变量怎么初始化,数组名与指针的区别
使用STL标准模板库之后,编程时已经很少使用数组和指针,相反,多使用序列容器vector代替之. (std::vector<int>,构造函数接受const std::vector< ...
- c语言中二维数组中维数的计算,数组指针字符串C语言程序设计-第4章.ppt
<数组指针字符串C语言程序设计-第4章.ppt>由会员分享,可在线阅读,更多相关<数组指针字符串C语言程序设计-第4章.ppt(132页珍藏版)>请在人人文库网上搜索. 1.程 ...
- sizeof求二维数组的大小
#include<stdio.h> int main() {//二维数组int a[3][4] = {0};printf("%d\n",sizeof(a));//48 ...
- sizeof计算二维数组的大小
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string>int main() {int a[3] ...
最新文章
- CALayer的基本操作
- sublime Text3 设置多个浏览器预览
- “不厚道”的程序员:年后第一天上班就提辞职?
- oracle 11g-R2安装
- influxdb连续查询CQ和保留策略RP
- C++超详细STL常用算法总结
- 询问区间内出现次数最多的数出现的次数
- 网优5g前景_网优行业的吐槽,附吐槽记录
- 张宇高等数学强化阶段笔记并标记重点
- 数学与计算机相关的题目,数学与计算机毕业论文题目大全 数学与计算机毕业论文题目怎么定...
- yytext显示html并编辑,YYText的使用
- (超详细)nessus下载与安装
- 家中买的计算机配置,配置,教您买电脑主要看哪些配置
- Mimikatz各模块基本用法
- linux物联网项目,6个开源项目提升物联网开发效率
- 高德地图 定位失败,10: 定位服务启动失败 解决办法
- [算法] 手绘家谱的流程思考
- 笔记本电脑怎么写日记
- 【数论】狄利克雷卷积
- 【VTK+有限元后处理】实时剖切视图
热门文章
- 描述一下JAVA的加载过程_JVM源码分析之Java类的加载过程
- html 表格行排序,用客户端HTML表格排序对行进行分组
- php打印mysql sql_php的打印sql语句的方法
- 技校毕业是什么学历_初中毕业上技校学什么专业好
- 一个div 上下两行_web前端工程师如何理解 CSS 布局和块级格式化上下文
- 的mvc_简述PHP网站开发的MVC模式
- python 系统架构_Python之优化系统架构的方案
- json阅读器_Flutter小说阅读器系列一:使用Bloc模式获取起点小说关键字提示
- 计算机 电工学简明教程,电工学简明教程复习要点
- python怎么安装request_【python】如何安装requests