C语言——sizeof和strlen_学习笔记

C语言中的sizeof和strlen是两个常用的操作符/函数,但它们的功能和用途有很大的区别。

sizeof

sizeof是C语言中的一个关键字,sizeof是一个运算符,它用于计算任何类型或对象的大小,以字节为单位。它可以用于计算数组、结构体、指针等数据类型的大小,甚至可以用于计算整个程序的内存大小。

例如,下面的代码演示了如何使用sizeof计算一个int类型变量的大小:

int x = 5;
printf("Size of int: %zu bytes\n", sizeof(int));
printf("Size of x: %zu bytes\n", sizeof(x));

输出结果为:

Size of int: 4 bytes
Size of x: 4 bytes

可以看到,sizeof返回的结果是int类型的大小,即4个字节。

除了计算变量的大小,sizeof还可以用于计算数组、结构体等数据类型的大小。例如,下面的代码演示了如何使用sizeof计算一个char类型数组的大小:

char arr[10];
printf("Size of char array: %zu bytes\n", sizeof(arr));

输出结果为:

Size of char array: 10 bytes

补充1:
sizeof 在计算大小的时候是根据类型推算的;sizeof 的操作数如果是一个表达式,则表达式不参与计算;
sizeof (操作符的结果在编译结束后就已经有结果了,而表达式的计算是在生成 可执行程序 后才开始计算或者运算的)

例如下面的代码:

//sizeof 在计算大小的时候,其实是根据类型推算的
//sizeof的操作数如果是一个表达式,表达式的不参与计算的!!!

int main()
{
    
    
	short s = 10;//占2个字节
	int i = 2;   //占4个字节
	int n = sizeof(s = i + 4);//截断
	printf("%d\n", n);//2
	printf("%d\n", s);//

	return 0;
}

运行结果为

2
10

补充2:sizeof(数组名),数组名表示整个数组,这里sizeof 计算的是整个数组的大小,单位是字节。
补充3:在除main() 以外的函数内部使用sizeof(数组名)的时候,这里的数组名表示一个地址。

strlen

strlen是一个C语言标准库函数,包含在头文件<string.h>中。它用于计算字符串的长度,不包括空字符(‘\0’)。这个函数接受一个字符串作为参数,并返回该字符串的长度。

例如,下面的代码演示了如何使用strlen计算一个字符串的长度:

char str[] = "Hello, world!";
printf("Length of str: %zu\n", strlen(str));

输出结果为:

Length of str: 12

可以看到,strlen返回的结果是字符串中实际字符的数量,不包括空字符。

需要注意的是,strlen只能用于计算字符串的长度,不能用于计算其他类型的数据的大小。另外,strlen在计算字符串长度时需要遍历整个字符串,直到遇到空字符为止,所以如果字符串中存在空字符(‘\0’),可能会产生意外的结果。

对比

举例说明:

#include <stdio.h>
#include <string.h>

int main()
{
    
    
    char str[] = "Hello,world!";
	int a = sizeof(str);
	int b = strlen(str);

	printf("%d\n",a);
	printf("%d\n",b);

	return 0;
}

输出结果为:

13
12

这是因为sizeof计算的是整个数组的所占的字节大小,str[]数组是字符类型的数组,一个字符占一个字节的大小,一共有13个字符(10个字母,2个标点,1个’\0’),所以a的值是13;而strlen只计算字符串的长度,遇到‘\0’就停止计算,所以b的值是12。

猜你喜欢

转载自blog.csdn.net/yjagks/article/details/132293995