网站教育培训机构排名优化水平

张小明 2026/1/19 20:26:52
网站教育培训机构排名,优化水平,百度账户登录,wordpress评论添加emoji表情一.什么是“数组退化成指针”#xff1f;在许多情况下#xff0c;数组名会退化为指针#xff0c;即原本代表数组的变量#xff0c;变成了指向数组第一个元素的指针。这意味着 数组名并不总是一个指向整个数组的指针#xff0c;而是指向数组第一个元素的指针。二.举例1.作为…一.什么是“数组退化成指针”在许多情况下数组名会退化为指针即原本代表数组的变量变成了指向数组第一个元素的指针。这意味着数组名并不总是一个指向整个数组的指针而是指向数组第一个元素的指针。二.举例1.作为函数参数传递时在函数参数中数组总是退化为指针。这是因为函数参数的大小是固定的而数组的大小在编译时并不确定。#include stdio.h void foo(int arr[]) { printf(%zu\n, sizeof(arr)); // 输出指针的大小4 或 8 字节 } int main() { int arr[10]; foo(arr); }结果sizeof(arr) 输出的是 指针的大小4 或 8 字节取决于32/64位平台。分析传递数组时arr退化为指针。sizeof(arr)返回的是指针的大小而不是数组的大小。void foo(int arr[ ]) 等价于void foo(int *arr)2.作为函数参数的引用时即使你使用引用C 中或者指针C / C 中传递数组数组名依然会退化成指针。#include iostream void foo(int* arr) { std::cout sizeof(arr) std::endl; // 输出指针大小 } int main() { int arr[10]; foo(arr); // 数组退化为指针 }分析arr作为参数传递给foo时退化为指针即传递给函数的是指向arr[0]的指针。foo(arr)等价于foo(a[0]);3.用作sizeof表达式时sizeof返回的是数组类型的大小然而如果在数组名后加上 0它会退化为指针类型只看指针类型的大小。#include stdio.h int main() { int arr[10]; printf(%zu\n, sizeof(arr)); // 数组的大小40字节假设 int 为4字节 printf(%zu\n, sizeof(arr0)); // 指针的大小4 或 8 字节 }分析arr在sizeof(arr)中arr是一个数组返回的是数组的总大小10 * sizeof(int)。arr0在sizeof(arr0)中arr退化为指针int*sizeof返回的是指针的大小4.在指针运算中数组名在指针运算中始终退化为指针因为数组名本质上是指向数组第一个元素的指针。#include stdio.h int main() { int arr[5] {1, 2, 3, 4, 5}; int *ptr arr; // 数组退化为指针 printf(%d\n, *(ptr 2)); // 输出 arr[2] 的值 3 }分析arr被赋值给ptr实际上是指针赋值这时候arr退化为指向arr[0]的指针。*(ptr 2)实际上等价于arr[2]。5.作为函数返回值时C在 C 中数组返回值也会退化为指针。如果你尝试返回整个数组编译器会报错但返回一个指向数组的指针是合法的。#include iostream int* foo() { static int arr[3] {1, 2, 3}; return arr; // 返回指向数组的指针 } int main() { int* ptr foo(); std::cout ptr[1] std::endl; // 输出 2 }分析由于arr是一个局部数组返回其指针是合法的arr退化为指向arr[0]的指针。注意数组名退化为指针因此你得到的是指向数组首元素的指针。6.数组作为运算中的操作数时在许多情况下数组名也会自动退化为指针尤其是作为运算的操作数时。#include stdio.h int main() { int arr[3] {1, 2, 3}; printf(%d\n, *(arr 1)); // 输出 2 }分析这里arr退化为指向arr[0]的指针arr 1就是指向arr[1]的指针*(arr 1)解引用它得到 2。三、总结 避免数组传参退化的方法数组在传参时默认会退化为指向首元素的指针但这是由形参类型决定的如果形参不是“数组引用”或“指向数组的指针”则实参数组一定会发生数组到指针的转换也就是所谓的退化。简单说只有当形参显式表示“整个数组类型”时退化才不会发生。那什么是形参为“数组引用”或“指向数组的指针”1.指向数组的指针C / Cvoid foo(int (*arr)[10]);int a[10]; foo(a);实参传的是a类型匹配int (*)[10]没有退化2.数组引用Cvoid foo(int (arr)[10]);int a[10]; foo(a);arr是数组引用数组身份被完整保留没有退化情况是否退化foo(arr)✅ 实参处发生转换void foo(int arr[])✅void foo(int *arr)✅void foo(int (*arr)[N])❌void foo(int (arr)[N])❌sizeof(arr)❌arr❌数组名在函数调用中作为形参时普通写法一定会退化只有参数代表整个数组类型它才能接收整个数组否则都是接收的单个元素正确不退化的形参写法void foo( int (* arr )[10] )写法指向int *p单个 intint (*p)[10]整个 int[10]
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

乡镇美丽乡村建设网站信息淘宝客网站 建设要钱不

WordPress使用指南:从主题调整到内容管理 1. 安装Web Developer Toolbar并测试CSS 如果你想在不精通CSS的情况下测试CSS更改对博客展示的影响,可以使用Firefox或Chrome的Web Developer Toolbar扩展。以下是在Firefox中安装该扩展的步骤: 1. 打开Firefox浏览器,访问http:…

张小明 2026/1/17 19:32:22 网站建设

网站维护说明手机网站设计尺寸大小

在数字化浪潮席卷各行各业的今天,传统OFD文档处理方案面临服务器依赖、部署复杂、响应延迟等痛点。OFD.js应运而生,通过纯前端技术栈彻底改变了这一格局,让OFD文档解析与渲染在浏览器中直接完成,实现了零后端依赖的技术飞跃。 【免…

张小明 2026/1/17 19:32:22 网站建设

网站租用一年服务器费用多少wordpress用户注册邮箱验证

在Windows系统上体验Unix命令行的强大功能从未如此简单。BusyBox-w32作为原生Windows移植版本,将超过200个经典Unix工具完美集成到您的操作系统中,彻底改变您在Windows环境下的工作效率和开发体验。 【免费下载链接】busybox-w32 WIN32 native port of B…

张小明 2026/1/19 19:14:31 网站建设

做空包网站合法吗seo搜索优化服务

还在为网盘下载速度慢而烦恼吗?网盘直链下载助手是一款免费开源的浏览器脚本,能够帮助您轻松获取百度网盘、阿里云盘、天翼云盘、迅雷云盘、夸克网盘和移动云盘的真实下载地址,让大文件传输变得简单高效。无论您是Windows、Mac还是Linux用户&…

张小明 2026/1/17 19:32:23 网站建设

网站中 点击出现登录框怎么做兰州网站制作设计

数字转型时代的商业模式与高增长企业价值构成 1. 数字转型时代的商业模式洞察 1.1 数字转型的综合分析 在当今经济环境中,数字转型已成为企业发展的关键议题。通过对相关材料的频率和相关性分析,并与国内外学术文献进行关联,我们能更全面地理解数字转型背景下的商业模式。…

张小明 2026/1/17 19:32:26 网站建设

建设网站的效果目的及其功能网络推广怎么推广

如何快速部署图神经网络解释器:完整操作指南 【免费下载链接】gnn-model-explainer gnn explainer 项目地址: https://gitcode.com/gh_mirrors/gn/gnn-model-explainer GNN模型解释器是一个强大的开源工具,专门用于解释和分析图神经网络&#xff…

张小明 2026/1/17 19:34:58 网站建设