C语言之字符数组和字符串末尾加‘\0‘情况浅述

2023-05-16

在字符数组中,以字符串形式存入,机器会自动加上'\0;

在字符数组中,以字符形式存入,机器不会自动加上'\0'

在字符串中,效果一样

在C语言中:const char * 代表着字符串

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
    //以字符串形式存入,机器会自动加上'\0'
    char buf1[] = {"hello"};
    //以字符形式存入,机器不会自动加上'\0'
    char buf2[] = {'h','e','l','l','o'};
    //由于数组元素小于定义的空间,所以后面自动补上 '\0'
    char buf3[10] = {'h','e','l','l','o'};
    //为了验证这里写成了 const char [],常规写法不建议
    const char buf4[] = "hello";
    //改成const char *会发生段错误,不允许这样写,类型不匹配
    const char buf5[] = {'h','e','l','l','o'};


    printf("buf1:%ld\n",strlen(buf1));
    printf("buf1:%ld\n",sizeof(buf1));
    //因为strlen没找到'\0',就会一直找下去,直到找到'\0'为止,属于非法访问内存
    printf("buf2:%ld\n",strlen(buf2));
    printf("buf2:%ld\n",sizeof(buf2));
    printf("buf3:%ld\n",strlen(buf3));
    printf("buf3:%ld\n",sizeof(buf3));
    printf("buf4:%ld\n",strlen(buf4));
    printf("buf4:%ld\n",sizeof(buf4));
    printf("buf5:%ld\n",strlen(buf5));
    printf("buf5:%ld\n",sizeof(buf5));
    return 0;
} 
buf1:5
buf1:6
buf2:15
buf2:5
buf3:5
buf3:10
buf4:5
buf4:6
buf5:10
buf5:5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言之字符数组和字符串末尾加‘\0‘情况浅述 的相关文章

  • 车辆视频检测器检测参数配置

    车辆视频检测器检测参数的最佳配置 span class token class name span class token keyword double span span whiteCarYuZhi span class token op
  • VUE v-for中获取二维对象数组

    对象数组如下 xff1a 34 index 34 34 2 34 34 text 34 34 办公平台 34 34 submenu 34 34 index 34 34 2 1 34 34 text 34 34 企业内部消息 34 34 in
  • c++基础知识第十天:结构体嵌套结构体,结构体作函数参数

    一 结构体嵌套结构体 结构体内的成员可以是另一个结构体 xff08 访问时用 访问到不能访问为止 xff09 1 例如 xff1a 每个老师指导一个学员 xff0c 一个老师的结构体中嵌套一个学生的结构体 include lt iostre
  • ros出现 datatype/md5sum错误

    1 错误图 2 我是在windows用的vs code ssh 另外一台电脑ubuntu18 04系统 xff0c 然后在那边terminal输入rqt plot但是图里面一直空白 xff0c windows这边输出上图报错 一直以为是自己
  • 安卓Android多阶段进度条progress bar附带动画效果

    还在为美工设计出的进度条而发愁吗 xff1f 大家先看效果吧 欢迎加安卓开发交流群 xff1a 308372687 xff08 博主尽可能帮助大家 xff09 转载请注明来源 代码连接 GitHub xff1a https github c
  • 【docker】Docker安装

    版本说明 OS xff1a Centos7 6 x64 Linux内核 3 10 0 1062 12 1 el7 x86 64 Docker Docker version 19 03 14 Docker要求CentOS系统的内核版本高于3
  • Python如何在函数内部使用全局变量

    使用方法 Python在函数内部使用全局变量的一种常用方法如下 xff1a 即首先需在函数外部给一个变量赋初值 xff0c 然后在函数内部用关键字 global 将此变量声明为全局变量 而且 xff0c 不能有形如 global a 61
  • 树莓派3B SWAP空间不足

    在对树莓派3B进行ROS indigo安装时 xff0c 到编译ROS程序这一步时 xff0c 总是失败 xff0c 查看了原因发现 xff0c 在为树莓派安装系统时swap空间没有设置 不过为时未晚 xff0c 现在也可以对swap空间进
  • TX2核心板安装OpenCV3.2(在cuda9.0的环境下)

    今天新到的TX2 xff0c 还有点烫手 xff0c 买来要用在无人机上做视觉的目标识别 xff0c 所以自然要装上OpenCV喽 xff01 TX2核心板买来就自带了cuda9 0 xff0c 据说这个和opencv3不太搭 xff0c
  • c语言面试题 指针30个常错题型

    1 char const p char const p const char p 上述三个有什么区别 xff1f char const p 常量指针 xff0c p的值不可以修改 char const p xff1b 指向常量的指针 xff
  • c++ 笔试面试题 难题精选 持续更新

    第一题 问下面的输出结果是 什么 xff1f include lt stdio h gt include lt iostream gt using namespace std class A protected int m data pub
  • VS2010 添加OnInitDialog的方法

    OnInitDialog 在vs2010中实现为虚函数 所以在 项目 gt 类向导 gt 虚函数 gt 选中要添加的类 xff0c 找到对应虚函数添加即可 就这么简单
  • HBITMAP与BITMAP 的区别 BMP图像的格式

    HBITMAP 是句柄 xff1b BITMAP 是实例 xff1a typedef struct tagBITMAP bm int bmType 必须是BM int bmWidth 指定位图的宽度 xff08 以象素为单位 xff09 i
  • fatal error LNK1281: 无法生成 SAFESEH 映像。

    解决方法 xff1a 1 打开该项目的 属性页 对话框 2 单击 链接器 文件夹 3 单击 命令行 属性页 4 将 SAFESEH NO 键入 附加选项 框中 xff0c 然后点击应用
  • 如何实现科技论文里面的算法

    这是一篇关于如何实现科研论文中算法的简要指南 作者曾实现过很多书本上和科研论文中的复杂算法 xff0c 在这篇文章中作者总结他在研究 xff0c 阅读 xff0c 编码和调试时积累的大量经验 很显然 xff0c 这篇文章主要集中在和计算机科
  • 程序员专用经典语录—看完笑一阵可以,千万不要死循环哦!

    IT人表示屁股上还得纹一个 lt body gt 要不中间来个hello world 真正的程序员喜欢兼卖爆米花 xff0c 他们利用CPU散发出的热量做爆米花 xff0c 可以根据米花 爆裂的速度听出正在运行什么程序 十年生死两茫茫 xf
  • android 自学中的散乱笔记

    1 查看程序运行记录 要在LogCat中查看 其内可选择查看的信息级别 xff0c 比如info xff0c error xff0c debug等等 xff0c 信息可筛选显示 2 xff1a 安装好手机驱动 xff0c 将手机接入usb即
  • java lambda表达式 闭包学习笔记

    我们把这些只拥有一个方法的接口称为函数式接口 声明一个接口是函数式接口 xff1a 编译器会根据接口的结构自行判断 xff08 判断过程并非简单的对接口方法计数 xff1a 一个接口可能冗余的定义了一个Object已经提供的方法 xff0c
  • C++ STL set和multiset的使用 hunst_xiehonghao 总结

    C 43 43 STL set和multiset的使用 std set lt int gt s 那个s这个对象里面存贮的元素是从小到大 排序的 xff0c 因为用std less作为比较工具 1 xff0c set的含义是集合 xff0c

随机推荐

  • 数据结构之车厢调度 思路很重要

    问题描述 假设停在铁路调度站入口处的车厢序列的编号依次为1 xff0c 2 xff0c 3 N 设计一个程序 xff0c 求出所有由此输出的长度为N的车厢序列 要求3节车厢调度的方法 xff0c 1代表进栈 xff0c 0代表出栈 有几点要
  • 判断N 数码是否有解 牛人总结 归并排序

    作者 力的博客 先介绍八数码问题 xff1a 我们首先从经典的八数码问题入手 xff0c 即对于八数码问题的任意一个排列是否有解 xff1f 有解的条件是什么 xff1f 我在网上搜了半天 xff0c 找到一个十分简洁的结论 八数码问题原始
  • 爬虫技术概览

    爬虫介绍 简介 自动化 半自动化从互联网上采集数据的程序 爬虫框架 一个简单的爬虫框架 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img 7ifdLU0V 1625273924704 http m qpic cn
  • 怎样在github上发布pre-release和release?

    请参考 xff1a https jingyan baidu com album ad310e80e0c1d11848f49e7f html picindex 61 2 以上是通过网页进行操作的 xff1b 能通过GUI进行操作吗 xff1f
  • git fatal: unrecognized input ^[

    原因是安装了一个vim的插件NREDTREE xff0c 另外需要退出当前用户然后重新登录
  • keil main之前执行过程

    硬件复位后 第一步是执行复位处理程序 这个程序的入口在启动代码里 默认 摘录一段cortex m3的复位处理入口代码 Reset Handler PROC PROC等同于FUNCTION 表示一个函数的开始 与ENDP相对 EXPORT R
  • 蓝牙物理链路类型:SCO和ACL链路与A2DP

    转载于https blog csdn net wenzongliang article details 84689377 蓝牙链路分两种同步链路 SCO 和异步链路 xff08 ACL xff09 A2DP xff08 Advanced A
  • FreeRTOS源码分析-异常处理

    asm void vPortSVCHandler void PRESERVE8 ldr r3 61 pxCurrentTCB Restore the context ldr r1 r3 Use pxCurrentTCBConst to ge
  • FreeRTOS源码分析-代码结构

    FreeRTOS作为开源的轻量级实时性操作系统 xff0c 不仅实现了基本的实时调度 信号量 队列和存储管理 xff0c 而且在商业应用上不需要授权费 FreeRTOS的实现主要由list c queue c croutine c和task
  • 建站基础:WordPress安装教程图解

    http www metsky com archives 430 html 本文介绍WordPress xff08 WP xff09 安装方法 xff0c 虽然很多IDC都会主动帮站长安装 xff0c 安装过程也很简单 xff0c 但毕竟是
  • 国内众筹

    http www zhihu com question 21022884 rf 61 20050061 非股权众筹网站 xff1a 点名时间 中国最大众筹平台 支持创新的力量 国内领先的众筹网站 xff0c 主打科技新硬件的综合类众筹网站
  • I2C slave address

    1 同一 I2C bus device 之 I2C slaver address 不可一样 2 检查 这些 devices 是否可以变更 I2C slaver address hardware pin control or software
  • FreeRTOS Task switch

    vTaskSwitchContext中看pxCurrentTCB traceTASK SWITCHED OUT 切出 taskSELECT HIGHEST PRIORITY TASK traceTASK SWITCHED IN 切入新的ta
  • cocoapods install

    http blog csdn net home zhang article details 47317751
  • UITableView

    http www cnblogs com kenshincui p 3931948 html
  • 一些网址

    http www chanpin100 com 点击打开链接
  • win10下的docker桌面端配置ubuntu进行访问

    前言 xff1a win10下安装了docker桌面端 xff0c 想使用linux系统来访问docker 1 win10下docker安装好之后 xff0c 可以直接使用powershell来访问docker环境 xff0c 如下 xff
  • ROS的基本用法二 服务通信

    第一节 xff1a ROS的服务 摘要 xff1a 介绍ROS的服是双向的通信 xff0c 客户端提交 xff0c 服务端处理后返回到客户端 1 理论介绍 自定义数据类型 xff0c 根据自定义数据类型进行处理 xff0c 客户端请求 xf
  • Ubuntu22安装docker-ce

    阿里云 span class token function sudo span span class token function apt get span remove span class token function docker s
  • C语言之字符数组和字符串末尾加‘\0‘情况浅述

    在字符数组中 xff0c 以字符串形式存入 xff0c 机器会自动加上 39 0 xff1b 在字符数组中 xff0c 以字符形式存入 xff0c 机器不会自动加上 39 0 39 在字符串中 xff0c 效果一样 在C语言中 xff1a