C++ sizeof(a)/sizeof(a[0]) 的正确用法
C++ 用法 正确 sizeof
2023-09-11 14:13:59 时间
sizeof(a)/sizeof(a[0]) 可以获取数组的长度,原理是 sizeof(a) 代表整个数组的大小,sizeof(a[0]) 代表数组中第一个元素的大小,而数组中的每个元素大小都是相同的,所以最后的计算结果就是数组的长度。
但并不是所有情况下都可以用这种方法计算数组长度,看下这段代码:
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <iomanip>
#include <fstream>
#include<cstdlib>
#include<string>
using namespace std;
void func(char arr[]){
cout << "sizeof(arr) = " << sizeof(arr) << endl;
cout << "sizeof(arr[0]) = " << sizeof(arr[0]) << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
char a[] = {'1','2','3','4','5','6'};
cout << "sizeof(a) = " << sizeof(a) << endl;
cout << "sizeof(a[0]) = " << sizeof(a[0]) << endl;
func(a);
getchar();
return 0;
}
输出结果:
a[] 是一个 char 数组,每个 char 类型大小为 1 直接,所以 sizeof(a) = 6*1 = 6,sizeof(a[0]) = 1。和我们上面讲的情况相同,没毛病 。
但是作为 func() 的参数传入后 sizeof(arr) 却和 sizeof(a) 不同了 。
因为作为参数传递时,变量的本质是一个指针 ,我这里是一个 win32 项目,所以指针大小为 4,如果编译成 64 位的话指针大小就是 8
相关文章
- c++如何使用全局变量
- 【C/C++学院】0817-递归汉诺塔 双层递归 /CPP结构体 /面向过程与面向对象的编程模式/类的常识共用体实现一个类的特征/QT应用于类以及类的常识
- 如何在C++中调用C程序
- C++:fread、fwrite函数用法
- C++ code:浮点数的比较(Floating-Pointing Number Comparison)
- Open3D (C++) 点云投影到球面
- paip.c++ 进程间通信方法大总结
- CV之OpenCV:HALCON机器视觉软件简介&OpenCV的基础概念、常用案例(打开图片/摄像头/视频)、常用函数解释大全(C++/python语言)之详细攻略
- Android JNI语法之--C++--list、set、map用法
- 【面试攻略】C++面试-边锋
- 【华为OD机试 2023最新 】 最优资源分配(C++)
- 【 华为OD机试 2023】字符串重新排序(C++ Java JavaScript Python)
- C++ map用法总结(整理)
- C++一些考题(有错请指出,及时修改)
- C++11 SFINEA规则_判断类是否存在某个成员函数
- C/C++音频算法: noise suppression算法及技术资料汇总
- C++重载下标操作符[](二)
- C++11之thread用法(一百零七)
- C++之list用法(一百零二)
- C++禁止隐式转换之explicit用法(八)
- C++ map()和pair()用法(四)
- Source Insight(C/C++/Java编辑器)用法
- c++stl之反向迭代器用法及注意事项!!!
- C++_pair
- 时间类-输入和输出(C++版本)