侧边栏壁纸
博主头像
半生瓜のblog

THIS IS NO END.

  • 累计撰写 278 篇文章
  • 累计创建 3 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

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

xuanxuan
2020-12-12 / 0 评论 / 0 点赞 / 4 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-02-14,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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

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

首先:

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

之后:

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

\0在其中算一个字符

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

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

对比:

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

例题

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

#include<stdio.h>
#include<string.h>
int main(void)
{   
    char arr1[] = "abc";
    char arr2[] = { 'a','b','c' };
    printf("%d\n",sizeof(arr1));
    printf("%d\n",sizeof(arr2));
    printf("%d\n",strlen(arr1));
    printf("%d\n",strlen(arr2));
    return 0;
}

想一下 . . . . . . . . . . . . . . .

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

0

评论区