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

数据结构|基础知识定义

1.值传递、地址传递、值返回、地址返回

1> 值传递:普通变量作为函数参数传递是单向的值传递,只是将实参的值复制一份给形参变量,形参的改变不会影响实参的值,因为所在内存空间不同

如果传递的是地址,被调函数使用指针接收,如果在被调函数中,没有更改指针指向空间中的内容,只改变指向,依然是值传递

2> 地址传递:指针、数组名作为函数参数传递,是地址传递,需要在被调函数中更改指针指向空间中的内容,形参内容的改变,实参也跟着改变

要求:主调函数中传递地址,被调函数中使用指针变量接收,被调函数中更改指针指向的内容

3> 值返回:普通变量通过函数返回值进行返回是单向的值返回,在主调函数中,该函数的返回值只能作为右值使用,不能被重新赋值

4> 地址返回:需要返回生命周期比较长的变量地址(全局变量、静态局部变量、堆区申请空间、主调函数地址传递的空间),该函数的返回值是一个左值,可以直接使用,也可以被重新赋值,被重新赋值后,被调函数中该空间中的内容也跟着改变

 2.内存分区

1> 一个进程启动后,系统会为该进程分配4G的虚拟内存

2> 0--3G是用户空间,程序员写代码操作部分

3> 3--4G是内核空间,主要与底层驱动打交道

4> 所有进程会共享3--4G的内核空间,但是每个进程独立拥有0--3G的用户空间

5> 0--3G用户空间又被划分为三部分:栈区、堆区、静态区(全局区)

6> 全局区又分为四个段:.bss段、.data段、.ro段、.txt段

7> 应用层主要操作0--3G的用户空间,底层主要操作3--4G的内核空间

 3.类型重定义(typedef)与宏定义(define)的区别

1> 宏定义只是单纯的替换,不做任何正确性检测,是一个预处理指令

2> 类型重定义,需要做正确性检测,是一条语句

3> 宏替换发生在预处理阶段,而类型重定义发生在编译阶段

4> 如果是对普通单个重命名没有问题,但是对指针重命名就有问题了 

 结构体大小

1> 一般而言,结构体的大小是各个成员变量所在内存之和

2> 特殊而言,结构体需要进行字节对齐,有利于数据偏移,和寻址功能

3> 字节对齐内容:

1、在结构体中的每个属性会根据自己所占内存大小,来设置起始存储位置,起始存储位置必须是自身类型的整数倍

2、在上面对齐的基础上,最后整体会进行一次对齐,整体的字节个数要是一个数据的整数倍,这个数据是系统字节对齐和结构体中最大成员所占字节的之间取最小值。min(系统对齐字节数,结构体中所占内存最大的字节数)

4> 在C语言中,一个空的结构体,所占内存大小为0字节

相关文章:

数据结构|基础知识定义

1.值传递、地址传递、值返回、地址返回 1> 值传递:普通变量作为函数参数传递是单向的值传递,只是将实参的值复制一份给形参变量,形参的改变不会影响实参的值,因为所在内存空间不同 如果传递的是地址,被调函数使用指…...

物联网AI MicroPython传感器学习 之 MFRC522 RFID射频IC卡感应模块

学物联网,来万物简单IoT物联网!! 一、产品简介 MFRC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片,其特点低电压、低成本、体积小的非接触式读写芯片。MFRC522支持MIFARE系列更高速的非接触式通信,双向数据…...

搭建ES集群

目录 前言 搭建ES集群 集群状态监控 分片备份 节点角色 脑裂问题 分布式存储 分布式查询 故障转移 前言 单机的ES做数据存储必然会面临两个问题:海量数据存储问题、单机故障问题 海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard)&…...

Tomcat的日志接收文件catalina.out nohup.out说明

catalina.out用于接收如下情况的日志: catalina.out其实是tomcat的标准输出(stdout)和标准出错(stderr),这是在tomcat的启动脚本里指定的,如果没有修改的话stdout和stderr会重定向到这里。所以我们在应用里使用System.out打印的东西都会到这…...

手机ip地址切换后有什么影响

随着互联网的普及和人们对网络连接的需求不断增加,手机已经成为我们日常生活中不可或缺的一部分。而在使用手机的过程中,手机ip地址的切换也成为了许多用户需要注意的问题。虎观代理小二二将探讨手机ip地址切换后可能产生的影响。 手机ip地址的含义及作…...

C++ 赋值运算重载,const成员,取地址及const取地址操作符重载

C 赋值运算重载,const成员,取地址及const取地址操作符重载 1. 赋值运算符重载1.1 运算符重载1.2 赋值运算符重载1.3 前置/--和后置/--重载 2. const成员3. 取地址及const取地址操作符重载 所属专栏:C“嘎嘎" 系统学习❤️ 🚀…...

嵌入式Linux系统的闪存设备和文件系统学习纪要

嵌入式Linux系统的闪存设备和文件系统学习纪要 Linux下的文件系统结构如下: NAND Flash 是一种非易失性存储器(Non-Volatile Memory),常用于闪存设备和固态硬盘(SSD)中。以下是几种常见的 NAND Flash 种类&…...

android 8.1 disable unsupported sensor

如果device不支持某种sensor,可以在android/frameworks/base/core/java/android/hardware/SystemSensorManager.java里将其disabled掉。以disable proximity sensor为例。 public SystemSensorManager(Context context, Looper mainLooper) {synchronized(sLock) {if (!sNativ…...

二、类与对象(一)

1 面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。以洗衣服为例,通常洗衣服会经历以下过程: 而C是基于面向对象的,关注的是对象&#xff0c…...

写给所有的程序员,或者努力生活的你。

朋友们,好好休息,意味着好好锻炼,好好睡觉,好好学习,学习可以是功利的,需要有规划的,有执行能力,有反馈奖励机制的,也可以无用之用方为大用(比如take shit的时…...

pytorch 笔记:GRU

1 介绍 对于输入序列中的每个元素,每一层都计算以下函数: ht​ 是t时刻 的隐藏状态xt​ 是t时刻 的输入ht−1​ 是 t-1时刻 同层的隐藏状态或 0时刻 的初始隐藏状态rt​,zt​,nt​ 分别是重置门、更新门和新门。σ 是 sigmoid 函数∗ 是 Hadamard 乘积。…...

Kubernetes - Ingress HTTP 升级 HTTPS 配置解决方案(新版本v1.21+)

之前我们讲解过 Kubernetes - Ingress HTTP 搭建解决方案,并分别提供了旧版本和新版本。如果连 HTTP 都没搞明白的可以先去过一下这两篇 Kubernetes - Ingress HTTP 负载搭建部署解决方案_放羊的牧码的博客-CSDN博客Kubernetes - Ingress HTTP 负载搭建部署解决方案…...

Verilog:写流水灯时遇到的问题

module flow_led(input sys_clk, //系统时钟50Mhz 周期0.02nsinput sys_rst_n, //系统异步复位&#xff0c;低电平有效output reg [3:0] led ); reg [24:0] cnt;//计数器计时0.5s250000000*0.02ns always(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)cnt <…...

操作系统第四章-存储器管理

4.1 内存的基本知识 4.1.1 逻辑地址和物理地址 逻辑地址又称为相对地址 物理地址又称为绝对地址 一. 逻辑地址 内存中有多个进程,相对地址是相对于进程的起始地址而言的地址. 二.物理地址 绝对地址是在整个内存下的地址 4.2 程序的装入和链接 引入:用户程序要在系统中运…...

org.springframework.cloud:spring-cloud-starter-openfeign:jar is missing详解

openfeign无法导入的问题 我感觉最近带的好几个新人在搭建springCloud基础框架的时候&#xff0c;会犯一个非常小的错误&#xff0c;导致进度卡住了。 这个错误就是Feign导入的错误&#xff1a; ‘dependencies.dependency.version’ for org.springframework.cloud:spring-c…...

Netty第一部

一、select和epoll原理分析 外设设备网卡、鼠标、键盘等通过总线写到内存中&#xff0c;中间就有DMA拷贝&#xff0c;操作系统怎么知道内存中有数据了&#xff0c;这就需要操作系统通过中断机制确定&#xff0c;如果有中断信号过来&#xff0c;cpu会首先打断用户程序执行&…...

【设计模式】第11节:结构型模式之“装饰器模式”

一、简介 装饰器模式主要解决继承关系过于复杂的问题&#xff0c;通过组合来替代继承。它主要的作用是给原始类添加增强功能。这也是判断是否该用装饰器模式的一个重要的依据。除此之外&#xff0c;装饰器模式还有一个特点&#xff0c;那就是可以对原始类嵌套使用多个装饰器。…...

Spire.doc读取模板文档,并在书签处插入内容

在书签位置插入文字 //加载模板文档 Document document new Document(Server.MapPath("~/File/评价结果.doc")); //创建书签导航器 BookmarksNavigator bn new BookmarksNavigator(document); //添加一个section到文档 Section newSec document.AddSection(); …...

性能测试实施流程,5个阶段给老板安排的明明白白!

性能测试分为5个阶段&#xff0c;分别是【需求调研阶段】→【测试准备阶段】→【测试执行阶段】→【测试报告阶段】→【测试总结阶段】。 1、需求调研阶段 需求调研分为两个步骤进行&#xff1a;需求调研、需求分析 需求调研 需求调研工作由性能测试实施人员牵头负责&#…...

【教程】R语言生物群落(生态)数据统计分析与绘图

查看原文>>>R语言生物群落&#xff08;生态&#xff09;数据统计分析与绘图实践 暨融合《R语言基础》、《tidyverse数据清洗》、《多元统计分析》、《随机森林模型》、《回归及混合效应模型》、《结构方程模型》、《统计结果作图》七合一版本方案 R 语言作的开源、自…...

玩转Python标准库:os与sys常用方法

目录 一、os与sys&#xff1a;Python与操作系统之间的翻译官 二、os模块&#xff1a;文件系统与进程管理 2.1 获取当前工作目录与路径拼接 2.2 创建、删除、重命名文件和目录 2.3 遍历目录&#xff1a;os.walk 2.4 执行系统命令&#xff1a;os.system vs subprocess 2.5…...

ENVI/ArcGIS实操指南:五分钟搞懂高光谱分类里的端元提取与丰度反演

ENVI/ArcGIS实操指南&#xff1a;五分钟搞懂高光谱分类里的端元提取与丰度反演 当你第一次打开ENVI软件&#xff0c;面对一张包含数百个波段的高光谱影像时&#xff0c;是否感到无从下手&#xff1f;那些五彩斑斓的像素背后&#xff0c;隐藏着怎样的物质组成信息&#xff1f;本…...

2026届必备的五大AI辅助论文神器推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 依托自然语言处理跟知识图谱技术&#xff0c;AI开题报告工具能够针对研究领域文献开展自动解…...

PMP证书到底有什么用?考证后没含金量?真相扎心但实用

最近刷CSDN&#xff0c;总能看到不少同行吐槽&#xff1a;“花大几千考了PMP&#xff0c;持证大半年&#xff0c;薪资没涨、职位没动&#xff0c;感觉这证就是个摆设&#xff0c;一点含金量都没有”。甚至有人直言“PMP就是智商税&#xff0c;不如多写几行代码、多做几个项目实…...

UI For Docker完整贡献指南:10个步骤成为开源社区达人

UI For Docker完整贡献指南&#xff1a;10个步骤成为开源社区达人 【免费下载链接】ui-for-docker A web interface for Docker, formerly known as DockerUI. This repo is not maintained 项目地址: https://gitcode.com/gh_mirrors/ui/ui-for-docker UI For Docker是…...

discuz所有下载版本和升级工具,2.0版本

此文章仅作参考&#xff0c;已无效&#xff0c;移步到3.0版本 下载版本&#xff1a; &#xff01;&#xff01;&#xff01;升级UCenter和升级工具使用&#xff08;都在里面&#xff09;Discuz! X3.2 - X3.4 升级至 Discuz! X3.5 详细教程 - 程序发布 - Powered by Discuz! …...

解放数字音乐:QMCDecode让加密音频转换变得简单高效

解放数字音乐&#xff1a;QMCDecode让加密音频转换变得简单高效 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转换…...

Filament Shield 性能优化:7个提升权限系统效率的关键策略

Filament Shield 性能优化&#xff1a;7个提升权限系统效率的关键策略 【免费下载链接】filament-shield The easiest and most intuitive way to add access management to your Filament Panel; Resources, Pages & Widgets through spatie/laravel-permission 项目地址…...

10分钟掌握DVWA-Chinese:中文Web安全实战平台完全指南

10分钟掌握DVWA-Chinese&#xff1a;中文Web安全实战平台完全指南 【免费下载链接】DVWA-Chinese DVWA全汉化版本 项目地址: https://gitcode.com/gh_mirrors/dv/DVWA-Chinese 你是否想学习网络安全&#xff0c;却被复杂的英文界面和术语吓退&#xff1f;DVWA-Chinese&a…...

Qwen3.5-27B惊艳案例分享:学生作业批改、医疗报告解读、工业图纸分析

Qwen3.5-27B惊艳案例分享&#xff1a;学生作业批改、医疗报告解读、工业图纸分析 1. 多模态AI的突破性应用 Qwen3.5-27B作为一款视觉多模态理解模型&#xff0c;正在重新定义AI在专业领域的应用边界。这款模型不仅能进行流畅的中文对话&#xff0c;更具备令人惊艳的图片理解能…...