C语言中函数sizeof和strlen区别

news2024/12/28 21:22:08

sizeofstrlen是C语言中的两个常用函数,它们的作用和使用方式有所不同。

  1. sizeof
  • sizeof是一个运算符而非函数,用于计算数据类型或变量占用的字节数。它可以计算任意数据类型(包括基本类型、自定义结构体、数组等)的大小。
  • 例如,sizeof(int)返回整型的字节数,通常是4个字节;sizeof(double)返回双精度浮点数的字节数,通常是8个字节。
  • sizeof在编译时求值,并且结果是一个常量表达式。
    int arr[10];
    size_t size = sizeof(arr); // 计算数组arr占用的总字节数
    printf("数组arr占用 %zu 字节\n", size);
    
    struct Point {
        int x;
        int y;
    };
    size_t structSize = sizeof(struct Point); // 计算结构体Point占用的总字节数
    printf("结构体Point占用 %zu 字节\n", structSize);
    
  • 结果为:
  • 2.strlen(使用时需要包含头文件#include<string.h>,sizeof则不用包含)
  • strlen是一个字符串处理函数,用于计算以null字符('\0')结尾的字符串的长度(不包括null字符本身)。
  • 它需要传入一个指向字符串首字符的指针作为参数,并从该位置开始逐个检查字符直到遇到null字符。
  • 返回值是一个无符号整数(size_t)表示字符串的长度。
char str[] = "Hello, world!";
size_t length = strlen(str); // 计算字符串str的长度
printf("字符串str长度为 %zu\n", length);

运行结果为:

strlen函数只适用于以null字符结尾的C风格字符串,即使用字符数组表示的字符串。如果传入一个指针指向非法内存区域或者没有以null字符结尾的字符序列,将导致未定义行为(undefined behavior)。

综上,sizeof计算数据类型或变量占用的字节数,而strlen计算以null字符结尾的字符串的长度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2058964.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用博达网站群管理平台的树状导航

1 介绍 由于网站建设需要&#xff0c;需在首页的左边竖栏部分使用树状导航。我又过了一遍《网站群管理平台用户手册》&#xff0c;没发现如何在网站的首页设置树状导航组件。昨天&#xff0c;我之所以在创建树状导航上不知所措&#xff0c;是因为平台本身有一些误导&#xff0…

捷途山海T2 VS 唐DM-i:谁主沉浮?

自从新能源技术涌入汽车界&#xff0c;国内自主品牌便凭借电力驱动实现了跨越式发展。众多卓越车型如雨后春笋般涌现&#xff0c;在消费者市场中与合资品牌形成了激烈竞争&#xff0c;这无疑也增加了消费者选择车辆的难度。面对琳琅满目的优秀车型&#xff0c;消费者很容易陷入…

页面设计任务 个人简介页面

目录 任务要求 任务讲解 源码: 详细讲解 html部分 CSS部分 任务要求 页面结构: 创建一个基本的 HTML 页面&#xff0c;页面标题为“我的个人简介”。页面内容分为以下四个部分&#xff1a; 顶部导航栏: 包含至少三个导航链接&#xff0c;例如&#xff1a;“主页”、“关于…

计算机毕业设计选题推荐-二手房价分析与预测-Python爬虫可视化-算法

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

YOLOv8添加SE注意力机制有效提升检测精度(已跑通)

SE注意力机制概念 SSqueeze-and-Excitation (SE) 注意力机制是一种专注于增强网络模型对不同特征通道的重要性理解的机制。它通过对通道维度上的特征进行动态调整&#xff0c;增强了网络对重要特征的敏感性。 源码 import numpy as np import torch from torch import nn fro…

Ubuntu 22.04 上更换 Node 版本管理器(nvm)的源

在 Ubuntu 22.04 上更换 Node 版本管理器&#xff08;nvm&#xff09;的源&#xff0c;可以通过修改 nvm 的配置文件来实现。以下是更换 nvm 源的步骤&#xff1a; 打开终端。 备份原始配置文件&#xff08;可选&#xff0c;但推荐&#xff09;&#xff1a; mv ~/.nvm/nvm.sh …

计算病理学中的Vision Transformer应用与挑战综述|顶刊精析·24-08-21

小罗碎碎念 这篇论文题为《Vision Transformers for Computational Histopathology》&#xff0c;综述了视觉变换器&#xff08;Vision Transformers, ViTs&#xff09;在计算病理学中的应用&#xff0c;包括图像分类、分割和生存风险回归等任务&#xff0c;并探讨了面临的挑战…

Modbus-TCP——Libmodbus安装和使用(Ubuntu22.04)

1、简介 Modbus是一种通信协议&#xff0c;广泛用于工业自动化和过程控制领域&#xff0c;允许不同设备之间进行数据交换。libmodbus是一个用于 Modbus 协议的开源库&#xff0c;主要用于开发和实现 Modbus 协议的客户端和服务器应用程序。libmodbus 以 C 语言编写&#xff0c…

后端开发刷题 | 合并两个排序的链表

描述 输入两个递增的链表&#xff0c;单个链表的长度为n&#xff0c;合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围&#xff1a; 0≤n≤1000&#xff0c;−1000≤节点值≤1000 如输入{1,3,5},{2,4,6}时&#xff0c;合并后的链表为{1,2,3,4,5,6}&#xff0c;…

python入门基础知识! 新手必备,看完技术突飞猛进!

基本的类 python最基础、最常用的类主要有int整形&#xff0c;float浮点型&#xff0c;str字符串&#xff0c;list列表&#xff0c;dict字典&#xff0c;set集合&#xff0c;tuple元组等等。int整形、float浮点型一般用于给变量赋值&#xff0c;tuple元组属于不可变对象&#x…

Nginx源码安装与进阶负载均衡

目录 一 web服务介绍 二 Nginx介绍与源码安装 2.1 nginx源码安装 2.2 平滑升级和回滚 三 配置文件详解 3.1 配置文件说明 3.2 全局配置与http模块 3.3 root与alias 3.4 location的介绍 3.5 账户认证 四 高级配置 4.1 nginx 压缩功能 4.2 变量介绍 五 nginx反向代…

【Android】adb devices 出现devices offline的问题

1 问题 adb devices 出现devices offline 2 解决方法 adb kill-serveradb start-server 然后&#xff0c;adb devices查看。 adb devices 问题解决啦。。。&#x1f49b; &#x1f499; &#x1f49c; ❤️ &#x1f49a; &#x1f49b; &#x1f499; &#x1f49c; ❤️…

韩顺平Java-第二十四章:MYSQL基础篇

一 数据库 1 数据库简单原理图 2 使用命令行窗口连接MYSQL数据库 &#xff08;1&#xff09;mysql -h 主机名 -P 端口 -u 用户名 -p密码&#xff1b; &#xff08;2&#xff09;登录前&#xff0c;保证服务启动。 3 MySQL三层结构 &#xff08;1&#xff09;所谓安装MySQL数…

第三期书生大模型实战营 第4关 Llamaindex RAG实践

前置知识 正式介绍检索增强生成&#xff08;Retrieval Augmented Generation&#xff0c;RAG&#xff09;技术以前&#xff0c;大家不妨想想为什么会出现这样一个技术。 给模型注入新知识的方式&#xff0c;可以简单分为两种方式&#xff0c;一种是内部的&#xff0c;即更新模…

ES6笔记总结(Xmind格式):第一天

Xmind鸟瞰图&#xff1a; 简单文字总结&#xff1a; es6知识总结&#xff1a; 新增语法&#xff1a; 1.let声明变量的特点&#xff1a; ①let 没有变量提升 ②在同一作用域下let的变量不能重复声明 ③let声明的变量存在块级作用域 2.const声明…

仿真软件的功能有哪些?仿真软件助力科研与工程领域

仿真软件是一种强大的工具&#xff0c;可以帮助工程师和科学家在虚拟环境中模拟和分析各种现象和系统。它们具有广泛的应用领域&#xff0c;包括工程设计、科学研究、产品开发和决策支持等。 随着科技的飞速发展&#xff0c;仿真软件已成为科研与工程领域中不可或缺的工具。本文…

“2025深圳电子信息展”带您感受科技创新如何改变世界

深圳&#xff0c;这座位于中国南海之滨的城市&#xff0c;自改革开放以来&#xff0c;便以惊人的速度崛起&#xff0c;成为了全球瞩目的经济特区与创新高地。被誉为“中国的硅谷”&#xff0c;深圳不仅是中国科技创新的重要引擎&#xff0c;更是高新技术产业的璀璨明珠&#xf…

洗衣行业在线预约小程序源码系统 源码可二次开发 带源代码包以及搭建部署教程

系统概述 在快节奏的现代生活中&#xff0c;时间成为了人们最宝贵的资源之一。随着科技的飞速发展&#xff0c;各行各业都在积极探索数字化转型&#xff0c;以提升服务效率与用户体验。洗衣行业&#xff0c;作为日常生活中不可或缺的服务领域&#xff0c;也不例外。今天&#…

记一次 SAP BP 编号范围错误引发的一个问题 GET_NRIV_LINE

本来想着循着错误提示去排查&#xff0c;但是还是想看看业务发生了什么&#xff0c;他们的操作是否有问题&#xff0c;不经意间发现 号码段是有问题的&#xff0c;由此大概可以判断是他们编号范围和类型之间的问题 角色和分组是否一致的&#xff0c;如果不一致就发生了以上错误…

roles及项目搭建(thirty-two day)

回顾&#xff1a; playbook 1、调用剧本 ansible-playbook /etc/ansible/playbook/book001.yml 2、编写剧本 --- - hosts: s1remote_user: roottasks:- name: 卸载httpdyum: namehttpd stateabsent- name: 安装nginxyum: namenginx …