在 c 语言中 sizeof 和strlen 的区别

1 从他们各自的属性而言, sizeof是运算符,而strlen是一个函数

2 从功能上讲. sizeof 它是从内存角度出发,它用来求所占字节数,也就是说是求占内存大小,在c 语言中,是将字符串作为字符数组来处理的, c系统在存储字符串时,会自动在后面加一个 \0 作为一个字符串结束标志,因此在用sizeof 求字符串所占字节大小时包括 \0 的大小。

而strlen是一个关于处理字符串的函数,它的功能是用来求一个字符串的长度.。strlen说白了就是一个计数器,它从内存的某个位置开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)。

3 sizeof 和strlen 的 使用形式

sizeof使用形式 : sizeof(变量) sizeof(变量类型) 例如:

int a = 20;
sizeof(a);// 结果为4 
sizeof(double);// 结果为8

strlen使用形式: strlen(字符数组) 注意:字符数组作为参数传给strlen时会退化成指针

   char c[] = "i am jackma"; // 定义一个字符数组c
	int ret2 = strlen(c);// 求字符串的长度,不包括 \0
	printf("%d\n", ret2);// 打印结果为  11

4 sizeof 和strlen的作用时间
sizeof 是运算符 在编译期求值产生作用, 而strlen是函数在运行期间产生作用
以下代码为例

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


int main(){
	char c[] = "i am jackma";// 定义一个字符数组c    注意: 空格也占一个字节的长度
	int ret1 = sizeof(c);// 求字符串在内存中所占字节数,包括 \0
	int ret2 = strlen(c);// 求字符串的长度,不包括 \0
	printf("%d\n", ret1);// 打印结果为  12
	printf("%d\n", ret2);// 打印结果为  11
	
    int a = 20; // 定义一个变量并将其初始化
	int *pa = &a; // 定义一个指针类型变量 让其存放变量a的地址
	printf("%d\n", sizeof(a));// 求该变量所占字节数结果为4 
	printf("%d\n", sizeof(pa));// 求该指针变量(  int* 型指针 )所占字节数 32位平台下为4 个字节  64 平台下占8个字节
	system("pause");
	return 0;
}
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页