再探指针与结构体

结构体指针详解 1、用结构体变量来为结构体指针初始化 struct student //定义了一个结构体 { long stuid; char name[10]; int age; int score; }stu1; //定义了一个结构体变量 struct student stu2; //因为结构体含有名字,所以可以继续定义结构体变量stu2 struct student *stu3; //定义了一个结构体指针 stu3=&stu1; //同指针一样,结构体. 阅读详情

指针

指针是什么?

电脑内存单元中有许多编号被称为地址,也叫做指针

口头语中说的指针通常指指针变量,是用来存放地址的变量

指针和指针的类型

我们再看下面的操作

这里的int类型的pa指针代码运行时操作了4个字节的数据,而char类型的指针只操作了1个字节的数据

指针类型决定了指针在进行操作时他的权限有多大

指针加减整数

我们看看这段代码

这里的pa+1就跳过了4个字节,pc+1则是跳过了1个字节,说明了类型不同跳过的字节数也不同,-1也同理

野指针

野指针就可以类比成野狗,十分危险

野指针的成因

指针未初始化

指针的越界访问

这里误把for循环的条件写成了

指针指向的空间被释放

这里的num只是个局部变量,当test函数调用完成后num所处的空间就会被释放,但指针p还指向num原先的地址,这个地址不属于num了,这里的p就是野指针

如何规避野指针

指针初始化

小心指针越界

指针指向空间释放,及时置NULL

避免返回局部变量的地址

指针使用前检查有效性

指针运算

指针加减整数

我们可以通过指针加减整数来使指针产生偏移

还有这个

这里*vp++,是先解引用vp,然后将它赋值为0,因为++是后置的,所以赋值完成后才会++,vp才会指向下一个元素

这个vp则刚好相反,是先---,再进行解引用和赋值

写成这样也是能跑的

指针-指针

指针-指针就是计算指针之间的元素个数

两个指针相减的前提是:指针指向的同一块连续的空间

也可以用指针相减来模拟实现一下strlen函数

数组和指针

我们首先来看看下面的代码

这里的p就是指针变量,一级指针变量

pp就是二级指针

a的类型是int;p的类型是int*,这里的 * 则表示p是一个指针,前面的int的意思就是p指向的对象的类型是int;pp的类型是int**,*的意思就是pp是一个指针,int*则表示pp指向的对象的类型是int*

p里面存的是a的地址,pp里面存的是p的地址

指针数组

存放指针的数组

也能写成这样

结构体

结构是一些值的集合,这些值称为成员变量。结构的每个成员可以使不同类型的变量。

结构的声明

结构体变量

这样创建出来的是全局变量

如果上面的是学生类型的话,s1,s2,s3,就是三个不同的学生

而我们一般是使用局部变量,就是s4,这里的s5也是全局变量

结构体的定义和初始化

也可以结构体里面嵌套结构体

或者我们想改数值,这里的age可以改,但是name改了就会报错

要想改name,就得使用strcpy函数

结构体传参和结构体成员访问

这个就属于结构体传参了

这里打印的时候就会用到结构体成员访问,就会用到 .

或者传址,当使用传址时访问结构体 成员就需要用到->

相对于传参,传址能节省空间,推荐传址。

结构体指针和结构体指针变量的区别 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、普通结构体变量二、结构体指针变量三、结构体指针测试代码如下: 前言 结构体变量主要有三种应用场景:1、普通结构体变量;2、结构体指针变量;3、结构体指针。 一、普通结构体变量 LNode L2; cout<<"&L2= "<<&L2<<endl;//该结构体变量的地址 //cout<<"L2= "<<L2<<endl;//存储了一个. 阅读详情

相关推荐

2023东华大学OJ机试题22-70

东华大学计算机考研复试机试22 约瑟夫环223、整除的尾数24、回文质数25、汽水瓶26、阶乘最后的非0位27、算菜价28、 水果价格29、求奇数的乘积30、求最晚和最早日期31、素数32、计算e33 数字之和34 繁殖问题35 奇妙的数字36 整除的尾数37 黑色星期五38 树39 约瑟夫环40 最大与最小41 环42 求数列项43 最高频率44 三艘船45 回文数46 特殊四位数47 最大值48 数列149 修理牛棚50 按要求输出序列51 部落人乘法52 序列53 双重回文数54 等差数列55 人见人

m0_49263811的博客 2597

C语言结构体与结构体指针的使用

C语言结构体与结构体指针的使用 tips:最近要好好学习一下数据结构,所以必不可少的就是c语言的结构体和结构体指针了,所以就整理一下这些基础知识 c语言结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合。说的通俗一点就是一个集合。c语言是一门面向过程的编程语言,而结构体的使用在某些层次上跟面向对象有点异曲同工之处了。下面回归正题,学习一下结构体以及结构体指针的知识。 一、结构体变量的定义和初始化 1、首先我们来看一下结构体的定义 struct 结构体名 { 成员列表; }

wrlovesmile的博客 8万+

mpu6050原理图_STM32控制 MPU6050 六轴陀螺仪资料汇总

一般使用MPU6050的步骤是先驱动I2C总线,然后初始化MPU6050,从MPU6050读取数据,最后是数据的处理。本文档详细介绍有关MPU6050 三维角度传感器电子陀螺仪使用说明。附件内容提供该 MPU6050模块原理图,配套STM32代码,相关数据手册及参考文档。实物连接图:MPU6050 六轴陀螺仪特点:使用芯片:MPU-6050供电电源:3-5v(内部低压差稳压)通信方式:标...

weixin_39911056的博客 4757

【C语言】指针与结构体

✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 🌹感谢您的点赞与关注,同时欢迎各位有空来访我的🍁平凡舍 文章目录@[toc]✍前言🌳指针🍁什么是指针🍁指针类型与指针解引用🍁野指针🍁指针运算🍁指针和数组🍁二级指针🍁指针数组🌳结构体🍁结构体的声明与成员的类型🍁结构体变量的定义和初始化及访问🍁结构体传参💺结语 ✍前言 指针和结构体这两块内容是非常重要的,可以说是C语言的重点内容了,同时,如果学习C语言版的数据结构,我们可以知道.

weixin_60478154的博客 6万+

LaTeX双栏浮动结构实战:用dblfloatfix解决跨栏图表排版难题

本文深入探讨了LaTeX双栏浮动结构在学术论文排版中的常见问题,特别是IEEE会议论文中的跨栏图表定位难题。通过介绍dblfloatfix包的整合解决方案,帮助用户实现精准的底部定位和浮动顺序保持,提升排版效率与质量。

weixin_30872499的博客 442

sram设计流程+memory compiler整理

→。

qq_50761108的博客 1万+

【C语言】结构体指针与结构体数组

一、结构体指针 与一般指针类似结构体也可以使用结构体指针进行引用使用。结构体指针的定义方式如下: struct Student stu = { 1001,"Li Lei",'M',1.87 }; //定义一个Student 的结构体变量stu struct Student *p=&stu; //定义一个Student的结构体指针变量来指向stu 当程序中定义了一个指向结构体变量的指针,就可以通过“指针名->成员变量名”的方式访问结构体变量的成员。 实例演示: #in...

Jacky_Feng的博客 2万+

在 Zynq 7010 上运行 VxWorks 7.0 的详细流程【持续更新】

本文介绍了在Zynq 7010开发板上运行VxWorks 7.0的完整流程。主要包括:1)使用Vivado创建硬件设计,配置Zynq模块并生成比特流文件;2)通过Workbench 4创建VxWorks工程,配置启动参数并生成镜像;3)下载运行步骤。此外还讲解了使用Workbench 4开发VSB和VIP工程的方法,包括工程创建、配置和调试流程。文中提供了关键操作截图和注意事项,为开发者提供了完整的Zynq 7010平台VxWorks开发解决方案。

weixin_45397344的博客 1223

结构体与指针(一)

在学习数据结构的时候,会经常使用到结构体。今天分享的内容是结构体与指针,因为结构体和指针本身的内容并不是太多,所以今天的内容还包括了链表的实现。希望可以通过这篇博客,让大家熟悉结构体与指针,以及链表的实现。 一、结构体指针 1.1、结构体的简单介绍 在实际应用过程中,一组单一数据类型的数组很难满足我们的需求,这个时候就需要借助结构体。结构体是一种构造数据类型,它有许多不同数据类型的成员。假如我们需...

ZackSock的博客 9519

R语言使用rms包的psm函数拟合参数生存模型(parametric survival model)、并可视化列线图(诺模图、nomogram)

R语言使用rms包的psm函数拟合参数生存模型(parametric survival model)、并可视化列线图(诺模图、nomogram)

statistics+insight+vista+power 903

AD-Copilot 论文解读:把“大模型看图”升级为“对照检验”的工业异常检测助手

本文提出AD-Copilot,一个面向工业异常检测的视觉语言助手,通过视觉上下文比较解决现有方法的不足。针对工业场景中多模态大模型表现不佳的问题,作者指出核心原因在于缺乏工业数据和比较能力不足。为此,论文提出三个关键贡献:构建Chat-AD数据集,设计Comparison Encoder显式建模图像差异,以及采用多阶段训练策略。实验表明,该方法在MMAD基准上达到82.29%准确率,定位任务提升3.35倍,并展现出良好的泛化能力。消融实验验证了比较模块的有效性,表明其成功源于高质量比较数据与显式比较模块的协

blanokvaffy的博客 330

指针与结构体

前言 最近又重新学习了一下指针,感觉收获颇多,这不来把我那点所学分享该大家。 1啥是指针 刚刚接触指针的同学肯定会很懵逼,指针是啥啊?指南针哈哈,不和大家开玩笑,我们进行正题吧,指针是本质是就是地址,但我们要注意我们口头上常说的指针并非指针,而是指针变量。 1.1指针与指针变量 指针:内存中一个最小单元的编号,也就是地址。 指针变量:是用来存放内存地址的变量。 我们可以看下面的这张图。 为了唯一标识一块内存空间,在C语言中就用指针来标记,就像我们的寝室的门牌号一样,假设张三的寝室

分享技术 5909

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

typedef关键字与结构体、结构体指针的定义

一使用typedef定义结构体 二使用typedef定义结构体指针 一、使用typedef定义结构体typedef用来定义新的数据类型,通常typedef与结构体的定义配合使用。使用typedef的目的使结构体的表达更加简练(所以说typedef语句并不是必须使用的)。定义一个名字为TreeNode的结构体类型(现在并没有定义结构体变量,并不占用内存空间):struct TreeNode {

一路洒满阳光! 3万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C语言结构体、指针和结构体指针的基本操作

与函数声明相同,在结构体声明后的位置,都可以直接使用。一般都是在所有函数前面声明结构体类型,方便调用。结构体定义的方式通常有两种。(1).方法一:先声明,再定义此方法定义的结构体变量通常为局部变量。(2).方法二:声明的同时进行定义此方法定义的变量通常为全局变量。struct STUDENT//此处的结构体类型STUDENT可省略,成为直接定义结构体变量的方式int num;char sex;int age;注意:-只有结构体变量才分配地址,结构体类型的声明不分配空间。

qq_42334826的博客 5638

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C语言指向结构体的指针,如何通过指针获取结构体当中的值

C语言指向结构体的指针,如何通过指针获取结构体当中的值 格式: 结构体类型 变量名称 ,* 指针名称 = &变量名称; 案例如下 定义结构体并定义结构体指针让其指向结构体 #include<stdio.h> #include<string.h> typedef struct stud{//定义了一个结构体 char Id[10];//学号 char Name[10];...

程序员猫爪 1万+

结构体、结构体数组与结构体指针指针

数组,是手动分配的连续空间,他是有空间大小的;首先需要看操作系统的位数,1字节 = 8位,所以32位操作系统可以操作的字节长度是4位,同理64位操作系统可以操作的是8位,然后就可以计算结构体的内存大小,我们可将结构体数组和结构体指针,带入到结构体内看,结构体内的数组是直接分配好空间大小的,但指针是没有分配空间的,我们需要在使用前对其分配空间大小,不然无法使用。,是指向数据地址的变量, 而每个数据类型在计算机中都会有其存储的地址,所以指针是可以直接指向结构体的,这是比较基础的用法。

小白的博客 2584

结构体数组与结构体指针

结构体数组与结构体指针 结构体变量可以使用“.”运算符,当对结构体指针使用.运算符时,一定要使用括号,因为 . 运算符的优先级是最高的,如果不使用括号,就会先执行点运算后执行 “*” 运算。注意:结构体变量名与数组名的含义是不同的,结构体变量名并不是该变量的地址,因此需要在结构体变量名前加上取址运算 “&”。lib_point是结构体的地址,也是第一个成员title的地址,虽然两个地址是相同的,但是它们的类型是不同的。疑问:既然lib是一个数组(结构体数组),那lib就是数组名,也就是数组的首地址,

xiawucha159的博客 7929

结构体指针是什么

1.所谓结构体指针,就是指向结构体变量的指针。 2.一个结构体变量的起始地址就是这个结构体变量的指针。 3.

当下可为,未来可期! 1万+

结构体指针和结构体变量

文章目录1.前言2.内存空间上面的差别3.访问上的差别 1.前言 今天在写题目的时候出现了一处小错误,就是由于结构体指针和结构体变量没有区分清楚,接下来谈一谈这两者的区别; 2.内存空间上面的差别 假设有如下代码: typedef struct Stu { int age; }stu; 此时定义一个结构体指针 stu *p; 一个结构体变量 stu q; 结构体指针p是指向一个结构体的,这个结构体没有名字,它指向的是一个结构体空间的首地址;如果需要使用这个结构体就必须malloc一个空间出来或者将一个

ych9527的博客 5796

结构体指针,C语言结构体指针详解

指向结构体变量的指针 #include <stdio.h> # include <string.h> struct AGE { int year; int month; int day; }; struct STUDENT { char name[20]; //姓名 int num; //学号 struct AGE birthday; //生日 float score...

zhe_csdn的博客 4188

指向结构体的指针和指向结构体指针的指针

例如,struct T *ptr;是指向一个结构体的指针,也可以当做一个结构体数组来用。 可以把结构体当做 int 来看,int* 类型即可以指向一个整数,也可以指向数组。 struct T ** ptr, 说白了 就是一个结构体指针的数组,数组内都是指针,还要分配内存。 1,结构体指针用法一: struSysInfo *SysInfo; SysInfo = (struSysInfo*)malloc(sizeof(struSysInfo)); SysInfo->VERSION = (char

celerylxq的专栏 4729

C++ 结构体指针与结构体数组的赋值

知识点小结: 当需要批量赋值结构体的时候,可以使用结构体数组。对于结构体指针,可以用来指向结构体数组的首地址,但是不能按照结构体数组的赋值方式进行赋值,感觉是无法预知后面批量赋值的大小。具体情况见以下代码: #include <iostream> using namespace std; struct student { string name; int score; ...

见牛羊的博客 1万+

结构体、结构体指针

此方法定义的变量通常为全局变量char *name;int age;} stu;int age;} stu;int age;指针变量的一般定义形式为:type + *。该格式仅表示定义一个指针变量,没有间接取值的含义//定义空指针“=”右侧必须为内存中的数据地址,不可以是变量,也不可以直接用整型地址值。int a=20;int *pi=&a;//取变量a所在的地址int b[2];struct 结构体名称 *指针变量名。

weixin_45229061的博客 2441

C语言结构体与指针和函数与指针

本篇博文主要介绍结构体、函数和指针的应用 结构体(struct),主要分三个部分 建立结构声明:描述结构如何组合的主要方法,创建一个模板 例如:struct book { char title[MAX]; char author[MAX]; float value; }; 这就是一个结构声明,它并没有创建一个实际的数据对象,而是描述了组成这类对象的元素。因为只是声明所以就没有占用内存。 ...

r_m_AA的博客 3303

结构体使用与指针的理解

以前总有一种疑惑。为什么结构体的指针有的需要用分配空间有的不需要分配空间呢?现在总结一下思路。先上代码。 #include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt; #include &amp;amp;amp;lt;string.h&amp;amp;amp;gt; #include &amp;amp;amp;lt;malloc.h&amp;amp;amp;gt; /*先定义几类结构体*/ struct s

kayshi的博客 4万+
上一篇: CMake保姆级教程
下一篇: MySQL——数据库基础
宴之敖者、
博客等级 码龄4年 131粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值