C/C++查看变量大小和数组长度

简介:

这里总结一下C/C++中查看变量大小,数组长度等的方法。

本文代码在windows 8.1下使用Dev-c编写,测试。

strlen函数,查看字符串长度:

1 //头文件
2 #include <cstring>   //c++
3 //或者
4 #include<string.h>  //c
5 //函数原型
6 extern unsigned int strlen(char *s)

strlen做的是一个计数器的工作,函数传入一个char类型指针,从指针处开始扫描直到碰到字符串结束符‘\0’为止返回计数器值\0不计算在内)。

注意点:准确的说是C格式字符串的注意点,注意最后是否‘\0’结束符。不然,可能造成内存越界

STL中的size()和lengh():

STL中,容器的长度等,建议使用其自带的成员函数查看,size()通常是查看使用大小的(不同的容器有不同实现)。

length()是string独有的,查看string中字符串长度,后来为了统一接口,string也加入了size()

内部实现原理和strlen相同,但是由于STL的封装性,比C风格字符串要安全。

length()和size()的实现是一样的,所以,为了增加代码重用性,建议使用size()

关于empty()和size():

通常而言,有empty(),意味着如果只是查看容器是否为空,则建议使用empty()。但有人反对,依据是下面的代码:

1 bool empty() const
2         {return (size() == 0); }

显然,这个写法的话,二者的复杂度没有区别。但是也有不同的实现,如下:

1 bool
2 empty() const
3 return begin() == end(); }

这回就明白了,之所以建议使用empty()是因为不同的容器有不同的实现。有的容器empty()实现可能是O(1)的复杂度。所以,无论如何,使用empty()肯定不是坏事

sizeof操作符:

很多人可能被误导,以为sizeof是函数,事实上sizeof是一个操作符,不信的话可以去掉所有头文件,看看sizeof可否通过编译

1 //sizeof(类型说明符,数组名或表达式);
2 //或sizeof 变量名
3 sizeof(object);              //sizeof(对象);
4 sizeof(type_name);     //sizeof(类型);
5 sizeof object;              //sizeof 对象;

 sizeof返回的是字节数:

  • 对于变量,返回的是变量类型的字节数
  • 对于数组,返回的是数组的字节数。如果需要知道数组长度,可以sizeof(数组)/sizeof(数组类型)。

注意:

  • 指针是个特殊的变量。
  • C++的动态绑定时,sizeof计算出的是动态绑定的对象类型的字节数。

转载请注明:旅途@KryptosX » C/C++查看变量大小和数组长度

目录
相关文章
|
5月前
|
存储 IDE 编译器
深入探索C++中的变量世界:理论与实践
【4月更文挑战第5天】本文介绍了C++变量的基础知识,包括声明、数据类型、const和volatile限定符。通过示例展示了变量在用户输入、计算、控制流程和函数参数中的应用,并列举了常见错误及避免方法,如未声明、作用域混淆、类型不匹配、未初始化和拼写错误。最后提出了变量命名、避免冗余、适时复用、注释说明和利用现代C++特性的最佳实践。
69 0
|
5月前
|
存储 编译器 C++
C++程序变量存储类别:深入理解与应用
C++程序变量存储类别:深入理解与应用
65 1
|
5月前
|
存储 C++
C++程序指针变量:深入理解与实践
C++程序指针变量:深入理解与实践
43 1
|
17天前
|
C语言 C++
实现两个变量值的互换[C语言和C++的区别]
实现两个变量值的互换[C语言和C++的区别]
14 0
|
2月前
|
存储 安全 C++
C++:指针引用普通变量适用场景
指针和引用都是C++提供的强大工具,它们在不同的场景下发挥着不可或缺的作用。了解两者的特点及适用场景,可以帮助开发者编写出更加高效、可读性更强的代码。在实际开发中,合理选择使用指针或引用是提高编程技巧的关键。
29 1
|
1月前
|
JavaScript 前端开发 Java
通过Gtest访问C++静态、私有、保护变量和方法
通过Gtest访问C++静态、私有、保护变量和方法
48 0
|
4月前
|
安全 C++
C++一分钟之-互斥锁与条件变量
【6月更文挑战第26天】在C++并发编程中,`std::mutex`提供互斥访问,防止数据竞争,而`std::condition_variable`用于线程间的同步协调。通过`lock_guard`和`unique_lock`防止忘记解锁,避免死锁。条件变量需配合锁使用,确保在正确条件下唤醒线程,注意虚假唤醒和无条件通知。生产者-消费者模型展示了它们的应用。正确使用这些工具能解决同步问题,提升并发性能和可靠性。
52 4
|
4月前
|
存储 C++ 容器
C++一分钟之-变量与数据类型入门
【6月更文挑战第18天】**C++编程基础:变量与数据类型概览** 了解变量(存储数据的容器)和数据类型是编程入门的关键。声明变量如`int age = 25;`,注意初始化和类型匹配。基本数据类型包括整型(int等)、浮点型(float、double)、字符型(char)和布尔型(bool)。理解类型范围和精度,使用字面量后缀增强可读性。深入学习数组、指针、结构体和类,以及动态内存管理,避免数组越界和内存泄漏。不断实践以巩固理论知识。
41 1
|
4月前
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
43 0
|
4月前
|
C++
C++之变量与常量
C++之变量与常量