当前位置: 首页 > news >正文

strlen和sizeof,const char *、char * const 和char []区别

strlen和sizeof

  1. strlen是函数,返回字符串的长度(不计’\0’),而sizeof是运算符,返回变量或类型的大小(字节数)。

  2. strlen在运行时计算,遍历字符直到’\0’,而sizeof在编译时确定。

  3. 对于字符数组,sizeof包括所有元素,包括’\0’(如果有的话),而strlen不包括。

  4. 当用于指针时,sizeof返回指针的大小,而strlen仍然计算指向的字符串长度。

  5. 如果没有正确的’\0’终止,strlen可能出错,而sizeof不受影响,只要数组定义正确。
    在这里插入图片描述

const char *、char * const 和char []

1指向常量的指针

const char * ptr中的const修饰的是char,ptr指向的是一个常量字符,不能通过ptr来修改所指向的内容,但ptr本身可以指向其他地址。

const char *ptr = "Hello";ptr = "World"; // 允许,改变指针的指向// ptr[0] = 'h'; // 不允许,编译错误,因为指向的内容是常量

2常量指针

char * const ptr中的const修饰指针ptr,表示ptr本身是一个常量,不能指向其他地址,但可以通过ptr修改所指向的内容。

char str[] = "Hello";char* const ptr = str;ptr[0] = 'h'; // 允许,修改指向的内容// ptr = "World"; // 不允许,编译错误,指针本身是常量

3指向常量字符的常量指针

const char* const ptr = "Hello";

指针不可重新指向其他地址。
指向的内容也不可修改。
在这里插入图片描述

4char buf[1024]

数组(固定大小的字符缓冲区)
在这里插入图片描述

http://www.xdnf.cn/news/595783.html

相关文章:

  • 第二十九天打卡
  • 网络割接的详细流程和关键点
  • 关于常见日志的几种级别和格式
  • 加工生产调度(Johnson算法)
  • vue vite textarea标签按下Shift+Enter 换行输入,只按Enter则提交的实现思路
  • 准备好,开始构建:由 Elasticsearch 向量数据库驱动的 Red Hat OpenShift AI 应用程序
  • 手写ES6 Promise() 相关函数
  • 怎么把https://github.com项目拉到自己的github
  • 在Ubuntu18.04下搭建SadTalker让图片开口说话
  • 第五章:异步幻境 · 时间与数据的秘密
  • STM32之温湿度传感器(DHT11)
  • 纯惯导(INS)的误差来源及其对静态漂移曲线的影响
  • SS928V100(Hi3403V100)----NNN推理引擎,AMCT-ONNX模型压缩量化踩坑记录(LINUX版)
  • 数据指标体系:企业数字化转型的“数字基因“革命
  • Even Split_CodeForces - 1666E分析与解答
  • 【三轴加速度计】QMA6100P数据手册解析
  • 基于RFSOC49DR-16收16发 PCIE4.0 X8 射频采集卡
  • 航电系统之云台检测技术篇
  • 5月22总结
  • 浅聊一下搭建企业私有知识库的可行方案
  • Springboot3
  • mapbox V3 新特性,实现三维等高线炫酷效果
  • Linux(Ubuntu)新建文件权限继承问题
  • MQTT-主题(Topic)
  • DeepSeek:以开源之力,引领AI技术新风潮
  • MySQL初阶:JDBC
  • 海盗王客户端创建角色遮罩层修改成自适应窗口尺寸
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.10)
  • QT入门基础
  • python训练营打卡第31天