news 2026/6/5 11:02:26

数组作为参数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数组作为参数

数组作为参数

当数组作为参数传递的时候,实际上传递的是数组的首地址,在语法上来说传递的是一个指针变量。

#include<stdio.h>#include<string.h>voidgetArrLen(charbuffer[]){printf_s("using sizeof: %zd\n",sizeof(buffer));printf_s("using strlen: %zd\n",strlen(buffer));}intmain(intargc,charconst*argv[]){charbuffer[]{"Hello World"};printf_s("sizeof(buffer) : %zd\n",sizeof(buffer));getArrLen(buffer);return0;}

考虑如上代码,main中的sizeof计算的是数组的长度,getArrLen中的sizeof计算的则是指针的大小,strlen计算的才是数组长度。因为在参数传递的过程中数组首地址变为了一个指针变量。

通过反汇编如上代码,我们可以发现在buffer的定义处调用sizeof实际上并没有计算buffer的长度,而是直接传递了一个立即数给printf_s,这是编译器优化的结果。因为buffer的长度在编译期间就可以确定了。

作为参数传递的时候才真正计算了buffer的长度。

strcpy和strlen

对于strcpy这个函数,编译器会使用xmm0这个寄存器来加速复制的过程。

书中说编译器会对这两个函数进行内联优化,我打开了O2编译选项,却没有看见内联优化。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 15:55:25

DL/T 645物联网设备一物一码协议架构设计

在电力物联网规模化建设背景下&#xff0c;DL/T 645系列标准为物联网设备的规范化管理提供了核心依据。一物一码技术作为设备全生命周期管理的关键载体&#xff0c;其与DL/T 645标准的深度融合&#xff0c;可实现设备身份唯一标识、数据可信传输、运维精准管控。本文基于DL/T 6…

作者头像 李华
网站建设 2026/6/5 9:49:09

Flink SQL实战:用SQL处理大数据的终极指南

Flink SQL实战&#xff1a;用SQL处理大数据的终极指南 1. 引入与连接&#xff1a;当SQL遇上流数据的革命 场景故事&#xff1a; 想象你是一家电商平台的数据工程师。"双11"高峰期&#xff0c;CEO要求实时监控交易额并即时发现异常订单。传统批处理方案需要等待数小…

作者头像 李华
网站建设 2026/6/5 9:49:32

修改Dify默认80端口的完整配置方法

修改Dify默认80端口的完整配置方法 在部署像 Dify 这样的现代化 AI 应用开发平台时&#xff0c;我们常常会遇到一个看似简单却极易出错的问题&#xff1a;端口冲突。尤其是当服务器上已有 Nginx、Apache 或其他 Web 服务正在运行时&#xff0c;默认监听 80/443 端口的服务根本…

作者头像 李华
网站建设 2026/6/4 16:27:23

LobeChat能否用于编写Prometheus监控规则?SRE运维提效

LobeChat能否用于编写Prometheus监控规则&#xff1f;SRE运维提效 在现代云原生环境中&#xff0c;服务的稳定性依赖于强大的可观测性体系。作为这一生态中的核心组件&#xff0c;Prometheus 承担着指标采集、存储与告警的关键职责。然而对于许多SRE工程师来说&#xff0c;真正…

作者头像 李华
网站建设 2026/6/4 13:10:14

AnythingLLM Windows安装指南

AnythingLLM Windows 安装与配置实战指南 在本地部署一个能理解你所有文档的 AI 助手&#xff0c;听起来像未来科技&#xff1f;其实只需要一台普通电脑、一点耐心&#xff0c;再跟着这份实操手册走一遍——你就能拥有一个完全私有、数据不出内网的智能知识库系统。 Anything…

作者头像 李华