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

深圳家装互联网网站东莞阿里网站设计

深圳家装互联网网站,东莞阿里网站设计,游戏大全免费版入口,中国建设银行app下载官网目录 一、sizeof运算符 1、基本特性 2、使用示例 3、注意事项 二、strlen函数 1、函数原型 2、基本特性 3、使用示例 4、注意事项 三、sizeof与strlen的对比 关键区别示例 对于字符数组char arr[] "abc";: 对于指针char *p "abc";: 四、总结…

目录

一、sizeof运算符

1、基本特性

2、使用示例

3、注意事项

二、strlen函数

1、函数原型

2、基本特性

3、使用示例

4、注意事项

三、sizeof与strlen的对比

关键区别示例

对于字符数组char arr[] = "abc";:

对于指针char *p = "abc";:

四、总结


一、sizeof运算符

sizeof是C语言中的一个重要运算符,用于计算变量或类型所占内存空间的大小,单位为字节。

1、基本特性

  • 操作符性质sizeof是单目运算符,不是函数

  • 计算对象可以计算变量、数据类型或表达式的大小

  • 计算时机在编译时确定结果,不会在运行时计算

  • 数据无关性只关注内存空间大小,不关心内存中存储的具体数据

2、使用示例

#include <stdio.h>int main()
{int a = 10;printf("%zu\n", sizeof(a));    // 计算变量大小printf("%zu\n", sizeof a);     // 括号可省略(仅变量时)printf("%zu\n", sizeof(int));  // 计算类型大小return 0;
}

3、注意事项

  1. sizeof用于变量时,括号可以省略(如sizeof a

  2. sizeof用于类型时,括号必须保留(如sizeof(int)

  3. 建议使用%zu格式说明符输出sizeof的结果(size_t类型)


二、strlen函数

strlen是C标准库中的字符串函数,用于计算字符串长度。

1、函数原型

size_t strlen(const char *str);

2、基本特性

  • 库函数:需要包含<string.h>头文件

  • 计算方式:从给定地址开始,统计直到遇到'\0'之前的字符数量

  • 终止条件:依赖字符串末尾的'\0'(空字符)

  • 时间复杂度:O(n),需要遍历整个字符串

3、使用示例

#include <stdio.h>
#include <string.h>int main()
{char arr1[3] = {'a', 'b', 'c'};  // 未以'\0'结尾char arr2[] = "abc";             // 自动包含'\0'printf("%zu\n", strlen(arr1));   // 结果不可预测,可能越界访问printf("%zu\n", strlen(arr2));   // 正确结果:3printf("%zu\n", sizeof(arr1));   // 3字节printf("%zu\n", sizeof(arr2));   // 4字节(包含'\0')return 0;
}

4、注意事项

  1. 必须确保字符串以'\0'结尾,否则会导致未定义行为

  2. 不会计算'\0'本身

  3. 对非字符串缓冲区使用strlen是危险的


三、sizeof与strlen的对比

特性sizeofstrlen
性质运算符库函数(需包含<string.h>)
计算内容内存空间大小(字节)'\0'前的字符数量
参数类型变量、类型或表达式必须以'\0'结尾的字符串指针
执行时机编译时运行时
空字符处理计入大小(如果是数组一部分)不计入长度(作为结束标志)
安全性总是安全的可能越界访问(若无'\0')
典型返回值数组总大小字符串实际长度

关键区别示例

对于字符数组char arr[] = "abc";:

  • sizeof(arr)返回4(包括'\0')

  • strlen(arr)返回3(不包括'\0')

对于指针char *p = "abc";:

  • sizeof(p)返回指针大小(通常4或8字节)

  • strlen(p)返回3


四、总结

理解sizeofstrlen的区别对于C语言编程至关重要:

  1. sizeof是编译时运算符,用于确定内存大小

  2. strlen是运行时函数,用于确定字符串长度

  3. 使用strlen时必须确保字符串正确终止

  4. 数组名在sizeof中返回整个数组大小,而作为参数传递时会退化为指针

正确使用这两个工具可以避免常见的内存和字符串处理错误。

http://www.dtcms.com/a/546239.html

相关文章:

  • 多模态大语言模型领域应用综合系统综述:从理论到实践
  • 湛江网站建设咨询个人主页网页设计作品
  • 机器学习-回归分析之如何建立回归模型
  • 做网站用什么编程软件h5制作平台人人秀
  • 重庆建站网络公司黄页荔枝抖音
  • K8s的包管理工具--Helm3函数(2)
  • 做网站骗河西集团网站建设
  • 如何制作网站的横幅seo全网营销
  • 网站主机要多少钱wordpress网站推广主题
  • 在不确定的时代中,唯一确定的是要有“改变的能力”
  • 仓颉的空安全基石:Option类型的设计与实践
  • 用php做的订票网站上海著名企业
  • 2025年搭建属于自己的网站HEXO静态页(四)网站页面美化
  • LangChain4j学习8:RAG (检索增强生成)
  • 【Unity每日一记】Unity物理引擎:刚体与碰撞体详解
  • 目前做哪个网站能致富贸易公司注册需要什么条件
  • Leetcode刷题笔记-最短无序连续子数组
  • 网站后台logo如何注册域名和网站
  • 前端笔试题 | 整理总结 ing | 跨域 + fetch + credentials(携带cookie)
  • 装饰器模式(c++版)
  • 现代感网站湖南网站开发公司电话
  • 手机网站设计机构seo站长工具平台
  • p2p理财网站开发流程wordpress5.0版本恢复到旧版本
  • AFE模拟前端芯片是什么(模拟前端芯片作用)
  • 操作系统(8)虚拟内存-Linux虚拟内存系统
  • 淘宝联盟怎样做新增网站推广好用的网站后台
  • 上海个人网站建设网站建设源码下载
  • 数字孪生深度长文学习
  • 太原网站建设推广番禺人才网官网入口
  • 简单网站建设哪家便宜泰州模板建站