C语言sizeof和strlen的含义,用法和区别

strlen( )

strlen( )的含义

strlen所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)

这是百度百科给出的strlen()的含义,说白了strlen()就是一个放在string.h这个头文件中的一个函数,其原型为: unsigned int strlen (char *s),返回值是字符串的长度,设计这个函数的目的是计算 字符串 字符串 字符串 的长度 不是 的长度。
先来说一下什么事字符串:
char ch1[30] = { ‘S’, ‘t’, ‘a’, ‘y’, ’ ', ‘h’, ‘u’, ‘n’, ‘g’, ‘r’, ‘y’, ‘,’, ‘S’, ‘t’, ‘a’, ‘y’, ’ ', ‘f’, ‘o’, ‘o’, ‘l’, ‘i’, ‘s’, ‘h’, ‘.’ };这就是初始化了一个字符串数组
char ch2[30] = “Stay hungry,Stay foolish.”; 这是ch1的简化版

strlen( )函数的用法

这里直接举个例子:

#include <stdio.h>
#include <string.h> //strlen() 放在这个库中
int main()
{
    
    
	char ch1[30] = "Stay hungry,Stay foolish.";
	char ch2[30] = {
    
     'S', 't', 'a', 'y', ' ', 'h', 'u', 'n', 'g', 'r', 'y', ',', 'S', 't', 'a', 'y', ' ', 'f', 'o', 'o', 'l', 'i', 's', 'h', '.' };

	printf("strlen(ch1)=%d strlen(ch2)=%d ", strlen(ch1),strlen(ch2));

	return 0;
}

下面是运行结果:
在这里插入图片描述

这是我自己写的strlen()函数的原型可以辅助理解一下strlen的作用:

unsigned int Mystrlen(char* str)
{
    
    
	unsigned int length = 0;
	while ((*str) != '\0')
	{
    
    
		length++ ;
		str++ ;
	}
	return length;
}

sizeof( )

sizeof( )的含义

C语言中sizeof( )是一个关键字,也可以看作是一个运算符,一个单目运算符(作用对象只有一个表达式)。 它的作用对象是变量类型,或者是变量。

sizeof( )的用法

对象为变量类型时,它会算出该变量类型在你计算机上的字节大小:

int main()

{
    
    
	printf("sizeof(char)=%d\nsizeof(short)=%d\nsizeof(int)=%d\nsizeof(long)=%d\n", sizeof(char),sizeof(short),sizeof(int),sizeof(long));
	
	printf("sizeof(float)=%d\nsizeof(double)=%d\nsizeof(char*)=%d\nsizeof(int*)=%d\n", sizeof(float), sizeof(double), sizeof(char*), sizeof(int*));
	return 0;
}

下面是运行结果:
在这里插入图片描述
对象为变量时,它会算出该变量的字节大小:

int main()
{
    
    
	char ch1[30] = "Stay hungry,Stay foolish.";
	char ch2[30] = {
    
     'S', 't', 'a', 'y', ' ', 'h', 'u', 'n', 'g', 'r', 'y', ',', 'S', 't', 'a', 'y', ' ', 'f', 'o', 'o', 'l', 'i', 's', 'h', '.' };
	char ch3 = 's';
	int a = 3;

    printf(" sizeof(ch1)=%d\n sizeof(ch2)=%d\n sizeof(ch3)=%d\n sizeof(a)=%d\n", sizeof(ch1), sizeof(ch2), sizeof(ch3), sizeof(a));

	return 0;
}

运行结果如下:
在这里插入图片描述

扫描二维码关注公众号,回复: 12415271 查看本文章

它俩的区别

区别从上方的例子中就可以看出,strlen是只针对于计算字符串长度的一个函数 ,而sizeof则是一个运算符一个关键字,sizeof针对的对象的范围要广很多。
就对于计算字符串长度来说,一个字符串存于一个数组中,sizeof是在计算这个数组的大小,而strlen是在计算这个数组中有多少字符。
例子:

int main()
{
    
    
	char ch1[30] = "Stay hungry,Stay foolish.";

	printf(" strlen(ch1)=%d\n sizeof(ch1)=%d \n\n", strlen(ch1), sizeof(ch1));
	
	return 0;
}

运行结果如下:
在这里插入图片描述

菜鸟总结,有错误的地方希望指正,谢谢。

猜你喜欢

转载自blog.csdn.net/qq_46209845/article/details/111465685
今日推荐