C/C++ | 求数组长度 | 求字符型数组长度 | 求string类型长度 | 字符串数组长度

本文介绍了不同类型的数组长度获取方法,包括整型数组、字符型数组、字符串类型及字符串数组的长度获取方式。对于整型数组使用sizeof操作符结合类型大小计算长度;字符型数组使用strlen函数获取实际字符串长度;字符串类型使用.size()或.length()方法;字符串数组则需要特殊处理。

数组长度

	int arr[] = {1,2,3,4,5,6,7,8,9};
	int length = 0;
	length = sizeof(arr) / sizeof(int); 
	int arr[10]={00};
	//这样的无法通过上述方法获得

字符型数组长度

	char c[10] = "asd";
	cout<<strlen(c)<<endl;
	cout<<sizeof(c)<<endl;
	cout<<sizeof(c)/sizeof(c[0])<<endl;

输出

3
10
10

所以字符串数组只能用strlen函数

字符串string类型长度

	string c = "asd";
	cout<<c.size()<<endl;
	cout<<c.length()<<endl;

输出

3
3

字符串数组长度

char* array_str[] = {"good","good","study"};
printf("sizeof(array_str): %d\n", sizeof(array_str));
printf("array_str len: %d\n", sizeof(array_str) /sizeof(array_str[0]));
### C++字符串数组获取长度的方法 在 C++ 编程中,可以通过多种方式来计算字符串数组长度。一种常见的方式是利用 `sizeof` 运算符结合单个元素大小来进行计算。这种方法适用于静态分配的数组。 #### 使用 `sizeof` 计算字符串数组长度 当定义的是一个固定大小的字符串数组时,可以使用如下公式来计算数组的总长度: ```cpp int len = sizeof(array) / sizeof(array[0]); ``` 这里的关键在于理解 `sizeof` 的作用以及它如何应用于整个数组及其第一个元素上[^4]。此方法仅限于编译期已知大小的数组;如果数组被动态创建或者作为指针传递,则无法应用该技术。 #### 动态情况下处理字符串数组 对于需要将数组作为参数传入函数的情况需要注意一个问题:一旦数组名作为实参传递到形参之后,在接收方看来这个“数组”实际上变成了指向首项的一个指针。因此直接调用 `sizeof(array)` 将总是得到固定的数值(通常是地址宽度),而不是实际的数据区尺寸。所以此时应该显式地把原始数组的实际长度也作为一个额外参数一同提交给目标函数。 另外值得注意的是,上述讨论针对的是传统意义上的字符型数组(char[])形式表示的文字序列集合(即所谓的"C风格字符串")。如果是标准库提供的 string 类型组成的容器(vector<string>)或者其他 STL 容器结构,则应采用相应类型支持的标准接口操作,比如 vector 提供了 member function `.size()` 来查询当前所含组件数目[^3]。 综上所述,对于简单的、局部声明并初始化好的 char[] 或者 const char* [] 形式的文字链表来说,推荐运用基于 sizeof 技巧的手动推导法得出其成员计数;而对于更复杂场景下的管理需则建议选用现代化工具集所提供的解决方案——STL 容器系列。 ```cpp #include <iostream> using namespace std; void printArrayLength(const char* array[], int length){ cout << "The length of the passed array is: " << length << endl; } int main(){ const char* strArr[] = {"apple", "banana", "cherry"}; // Calculate and display the length within 'main' int lenMain = sizeof(strArr)/sizeof(strArr[0]); cout << "Calculated Length inside Main Function: " << lenMain << endl; // Pass both the array AND its calculated length to another function. printArrayLength(strArr, lenMain); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值