C语言——强化记忆strlen与sizeof

2023-05-12 20:58:59 浏览数 (2)

C语言——强化记忆strlen与sizeof

由于我的记性比较差,故作此篇来提醒自己。

首先:

strlen和sizeof两个东西没有什么关联

之后:

详细解释 sizeof运算符:         sizeof运算符允许程序存储指定类型值所需的空间大小。表达式的值是一个无符号整数,代表存储属于类型名的值所需要的字节数。

在其中算一个字符

strlen库函数-要引头文件         是计算字符串长度的,计算字符串长度时是结尾的标志,不算做字符数量。只有从前往后数的时候碰到才会停止

在其中不算一个字符,字符串结束的标志

对比:

代码语言:javascript复制
#include<stdio.h>
//求字符串长度的库函数
#include<string.h>
int main(void)
{	
	//定义一个字符串
	//这里涉及到一点数组的知识
	//这个数组没有指定大小,直接进行初始化,
	//他会根据初始化的内容,来确定数组有几个元素。
	char arr1[] = "abcdef";
	//计算arr1这个数组占几个元素
	//占 a b c d e f  这7个元素
	printf("%dn", sizeof(arr1));//输出7
	//计算字符串长度
	//之前的字符个数
	//a b c d e f 这6个字符
	printf("%d", strlen(arr1));//输出6
	return 0;
}

例题

请问以下代码中的4个printf分别打印什么

代码语言:javascript复制
#include<stdio.h>
#include<string.h>
int main(void)
{	
	char arr1[] = "abc";
	char arr2[] = { 'a','b','c' };
	printf("%dn",sizeof(arr1));
	printf("%dn",sizeof(arr2));
	printf("%dn",strlen(arr1));
	printf("%dn",strlen(arr2));
	return 0;
}

想一下

4 3 3 3 ? 答案是 4 3 3 15 这是为什么呢? 答:最后一个输出为15,这是因为在数组arr2中没有作为结尾,所以计算的值是个随机值。 补充知识:单引号里面放的是字符,双引号里面放的是字符串。 当输入为字符串(即arr1)的时候编译器会在结尾自动添加, 而当输入字符的时候,字符数组(即arr2),并不会自动补.

0 人点赞