字符数组的长度

博客探讨了字符数组和字符串的长度相关内容,涉及char指针引导的字符数组、char数组、string字符串的长度计算,还提及char数组和string字符串的结束符,指出二者均以 \\0 而非空格、换行作为结束符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、char指针引导的字符数组: 

 strlen返回字符数组的长度,包括空格。

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	const char* p = "hell o";   //因为"hell o"是常量型的,所以要加const
	
	cout<<strlen(p);
	return 0;
} 

结果:

2、char数组:

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	char p[] = "hell o";
	
	cout<<strlen(p);
	return 0;
} 

结果:

3、string字符串的长度:

 

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	string p = "hell o";	
	cout<<p.length();
	return 0;
} 

结果:

 

4、char数组结束符 \0:

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	const char* p = "hel\0l o";
	
	cout<<strlen(p);
	return 0;
} 

结果:

5、string字符串结束符 \0:

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	string p = "hel\0l o";
	
	cout<<p.length();
	return 0;
} 

结果:

 

 

小结:

无论char数组,还是string字符串,都不是空格,不是以换行(\n)作为结束符,而是以 \0 作为结束符。

<think>好的,用户问的是C语言中如何获取字符数组长度。首先,我需要明确字符数组在C语言中的存储方式,以及两种常用的方法:sizeof和strlen的区别。 根据引用[2],字符数组以'\0'作为结束符。sizeof是运算符,计算数组的总字节数,包括'\0'。而strlen是函数,计算直到'\0'前的字符数,不包括'\0'。比如char str[10] = "hello"; sizeof返回10,strlen返回5。用户需要区分这两种情况。 然后,引用[3]提到,当字符个数与数组长度相同时,可以省略数组长度,系统自动确定。这可能影响sizeof的结果,比如char str[] = "hello"; sizeof会包括'\0',所以是6,而strlen是5。 用户提供的示例代码中,strlen(str1)可能有误,因为str1被定义为{"hello "},可能缺少逗号或第二个参数?需要指出代码中的错误,比如printf的参数不正确,应该只传str1到strlen。 接下来,生成相关问题要考虑用户可能的疑惑点,比如如何正确初始化数组,处理未以'\0'结尾的情况,或者动态分配的数组长度问题。确保问题覆盖常见错误和使用场景。 最后,整理回答结构,先解释两种方法,再给出示例代码,指出注意事项,最后附上相关问题。确保引用正确,比如引用[2]说明sizeof和strlen的区别,引用[3]关于数组初始化。</think>在C语言中,获取字符数组长度的方法主要分为两种场景,具体实现方式如下: ### 一、静态字符数组长度获取 1. **使用`sizeof`运算符** `sizeof`计算的是数组的总字节数,包含结束符`\0` $$数组长度 = \frac{sizeof(数组名)}{sizeof(数组元素类型)}$$ 示例: ```c char str[20] = "Hello"; int length = sizeof(str)/sizeof(char); // 结果为20 ``` [^2] 2. **使用`strlen`函数** `strlen`计算的是实际有效字符数,遇到`\0`停止 ```c #include <string.h> char str[20] = "Hello"; int length = strlen(str); // 结果为5 ``` [^1] ### 二、动态字符数组长度处理 当数组作为参数传递时,必须额外传递长度参数: ```c void print_string(char arr[], int len) { for(int i=0; i<len; i++) { printf("%c", arr[i]); } } ``` ### 三、注意事项 1. 混合使用`sizeof`和`strlen`时需注意: ```c char str[] = "Embedded"; // sizeof(str)=9(包含\0),strlen(str)=8 ``` [^3] 2. 当字符数组未初始化时: ```c char str[50]; // sizeof仍然返回50,strlen可能返回随机值 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值