C语言中的strlen()和sizeof()怎么使用

作者:有用网 阅读量:267 发布时间:2023-11-02
关键字 C语言

这篇文章主要介绍“C语言中的strlen()和sizeof()怎么使用”,在日常操作中,相信很多人在C语言中的strlen()和sizeof()怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言中的strlen()和sizeof()怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

C语言中的strlen()和sizeof()对比

在C语言中,没有字符串这种变量类型,一般用两种方法实现。
一是用双引号生成常量字符串再赋值给一个指针,指针指向的是该常量字符串的首字符地址;
二是利用字符数组,把字符存储在数组中。值得注意的是,利用字符数组创建字符串的时候记得把’ ’存进去(‘ ’本身是一个字符,占一个字节),因为很多对字符进行操作的库函数或多或少都跟’ ’有关系,或者说’ ’是字符串结束的官方标志。

字符串
char arr[]={'a','a','a','a','a','a'}
char *str = "aaaaaa"

定义:
**1. strlen函数:**计算的是字符串str的长度,从字符的首地址开始遍历,以 ‘ ’ 为结束标志,然后将计算的长度返回,计算的长度并不包含’ ’。

当我们遇到“ "时我们就要停止读取,此时“ "前字符的个数就是字符串的长度,注意:这里的“ "只是结束标志,仅仅告诉我们strlen函数读取到这里就要停止了,“ "不算做一个字符!!!

**2. sizeof函数:**相比strlen函数,sizeof就简单多了,sizeof其实就是一个运算符,主要用来计算所占空间字节的大小。

指针字节:
指针 16位 2个字节
指针 32位 4个字节
指针 64位 8个字节

32位系统:
char 1个字节
short 2个字节
int 2个字节
long 4个字节
char* 4个字节
int* 4个字节
int** 4个字节

64位系统:
char 1个字节
short 2个字节
int 4个字节(x 2)
long 8个字节(x 2)
char* 4个字节
int* 4个字节
int** 4个字节

  • 字符串常量放在静态存储区,为只读,不能再通过指针修改,例如chr *p=“xiaolong”

  • strlen遇到 结束,长度不包括

  • sizeof计算占用多少字节时, 也包含在内

1. strlen()

int main () {
	
	char *str="xiaolong";
	printf("%d
",strlen(str));
	return 0;	
}

输出:8
#include <stdio.h>
#include <string.h>
int main () {
	
	char str[]="xiaolong";
	printf("%d
",strlen(str));
	return 0;	
}
输出:8
#include <string.h>
int main () {
	
	char str[10]="xiaolong";
	printf("%d
",strlen(str));
	return 0;	
}

虽然数组大小是10,但是编译器自动在xiaolong后面添加了  ,因此长度不是10而是8
输出:8

2. sizeof()

#include <stdio.h>
#include <string.h>
int main () {
	
	char str[10]="xiaolong";
	printf("%d
",sizeof(str));
	return 0;	
}

指定大小为n的char数组无论如何都是占用n个字节,例如此处10字节
输出:10
#include <stdio.h>
#include <string.h>
int main () {
	
	char *str="xiaolong";
	printf("%d
",sizeof(str));
	return 0;	
}

由于是指针,32位机器指针占4个字节
输出:4
#include <stdio.h>
#include <string.h>
int main () {
	
	char str[]="xiaolong";
	printf("%d
",sizeof(str));
	return 0;	
}

结果不是8而是9,因为默认在后面添加了一个 ,  

#发表评论
提交评论