C语言 指针、结构体、数组

【理解C语言】一维数组的传参 数据数组与指针数组的传参方式 阅读详情
	MD5_CTX MD5;
	MD5Init(&MD5);

	printf("MD5: %x \n", MD5);
	printf("&MD5: %x \n", &MD5);
	printf("MD5: %p \n", MD5);

	int data = 123;
	MD5Update(&MD5, &data, 4);
	unsigned char rsl[16];
	unsigned char *ptr = "123";
	MD5Final(&rsl, &MD5);

	printf("MD5: %x \n", MD5);
	printf("&MD5: %x \n", &MD5);
	printf("MD5: %p \n", MD5);
	printf("\n");
	printf("rsl: %x \n", rsl);
	printf("&rsl: %x \n", &rsl);
	printf("rsl: %p \n", rsl);
	printf("\n");
	printf("ptr: %x \n", ptr);
	printf("&ptr: %x \n", &ptr);
	printf("ptr: %p \n", ptr);

运行结果如下,可以看出:

结构体  : MD5表示的是该结构体第一个元素的值,&MD5是结构体重第一个元素的地址;

数组      :rsl与&rsl表示的都是该数组第一个元素的地址;

指针      :ptr表示的指针保存的地址,&ptr表示指针的地址。


下面的内容出处:http://blog.youkuaiyun.com/tianjizheng/article/details/46314567

c语言一维数组做参数传递给函数:

首先抛结论:

1:C语言中,当一维数组做函数参数时,编译器总是把它解析成一个指向其首元素的指针。

2:实际传递的数组大小与函数形参指定的数组大小没有关系。

然后举例说明:

下面是一个元素交换函数,把数组array【i】和array【j】交换位置。注意看数组是怎么传递给函数的。

正确的写法1:




解释说明:编译器把array解析成指向整形元素的指针,也就是数组的首地址,方括号中加不加指定数字都可以,因为编译器根本不看,因此最好不写,以免引起误解。


正确写法2:




解释说明:这样写就更直接明了了,参数是指向整形元素的指针,而数组的名字又是首元素的地址,也印证了数组名是指针常量。


可能会有一些同学对 函数中array[i] , array[j]不理解,实际上,array[i] = *(array+i),解释称首地址加偏移地址i,就是指向的第i个元素了。

array(i)  =  (array +i)   //这是个指针,指向第i个元素。

array[i]  =  *(array+i)  //这是数组的第i个元素。

注意()和[ ],别看错了。

完。


C语言结构体数组+结构体类型指针+指向结构体数组的指针+typedef类型 C语言结构体数组+结构体类型指针+指向结构体数组的指针+typedef类型结构体数组两种结构体数组的定义形式用sizeof运算符求结构体数组所占字节数结构体类型指针指向结构体数组的指针typedef类型 结构体数组 如果要处理多个类型相同的结构体数据,就需要定义结构体数组 两种结构体数组的定义形式 结构体数组定义的方法和结构体变量定义的方法一样,只不过加了一个数组的长度而已 第一种:和结构体类型同时定义,例如: struct student { int sno; char sname[10]; int 阅读详情

相关推荐

MIKE11实战:平原河网水动力建模从入门到精通(附GIS数据处理技巧)

本文系统介绍了MIKE11软件在平原河网水动力建模中的完整实战流程。从GIS数据预处理、河网构建、参数率定到结果分析,详细阐述了构建可靠数字孪生模型的关键步骤与技巧,旨在帮助水利工程师高效解决平原地区复杂水流模拟的挑战,为防洪决策提供科学依据。

weixin_28419039的博客 689

一维数组传参(一维数组作函数参数)

一维数组进行传参的时,函数参数可以写成数组或指针(因为数组名是地址,故可用指针接收); 其中参数是数组时,数组大小可写也可不写; 参数是指针时要找到对应的指针类型才行; 传递参数是普通数组 arr(3种方式): #include<iostream> using namespace std; void test(int arr[]) { } void test(int arr[10]) { } void test(int* arr) { } int main() { int arr.

weixin_42322256的博客 3752

ESP32连接PDM麦克风操作指南:新手入门必看

手把手教你如何将ESP32与PDM麦克风连接,采集音频数据并用于音频分类应用。内容涵盖硬件接线、代码配置及实际调试技巧,适合初学者快速上手esp32在声音识别场景中的使用。

weixin_42590539的博客 1329

【C语言】一维数组传参和二维数组传参的总结

本文介绍一维数组和二维数组作为实参,形参的接受方式。以上就是一维数组传参和二维数组传参的一些方法。

m0_49425260的博客 4764

克里金插值(Kriging)在MATLAB中的实现(克里金工具箱)

一,直接献上克里金插值MATLAB工具箱 链接:https://pan.baidu.com/s/1p0lt2G8KQ-els7Dyw5jPFg 提取码:wcss 下载后将该程序添加到MATLAB安装文件夹中的/toolbox下,然后在设置路径中添加该程序文件为默认路径即可调用程序。 资源中内附程序使用说明PDF。 二、本人实际操作代码如下所示,标注如下 load data1 %载入数据 %模型参...

qq_40937675的博客 6万+

一文详解Stata重复测量方差分析的概念、原理、适用情形以及操作命令实现、对结果的解读、操作注意事项 附零基础小白友好入门Stata统计学/计量经济学学习路径

重复测量方差分析(Repeated Measures ANOVA)适用于同一受试者在不同时间点或条件下的多次测量数据,如疗效跟踪和跨条件对比研究。其核心特征包括:数据结构为每个受试者多个观测值,数据具有相关性(违反独立性假设),变异分解为个体间和个体内变异。关键假设包括正态性、方差齐性和球形性(通过Mauchly检验验证)。适用场景包括纵向研究和小样本追踪,但不适用于存在滞留效应或学习效应显著的数据。操作步骤涉及数据准备(宽/长格式转换)、正态性与球形性检验、主分析命令(单/多因素)及事后检验。

m0_72274883的博客 1565

c语言一维数组做参数传递给函数:

今天碰到了一维数组做函数参数的问题,那就扒一扒这个问题: 首先抛结论: 1:C语言中,当一维数组做函数参数时,编译器总是把它解析成一个指向其首元素的指针。 2:实际传递的数组大小与函数形参指定的数组大小没有关系。 然后举例说明: 下面是一个元素交换函数,把数组array【i】和array【j】交换位置。注意看数组是怎么传递给函数的。 正确的写法1: 解释说明:编译器把

Captain 2万+

A Mathematical Framework for Transformer Circuits—(二)

transformer数学理论框架

qq_42208244的博客 758

C语言函数参数列表传递一维数组详解

传递一维数组是 C 语言中非常常见的操作,因此掌握这个技能是非常重要的。在本文中,我们介绍了两种传递一维数组的方法,即通过指针和地址。另外,我们也讲解了使用数组形式做参数的写法。这些技巧对于 C 语言的学习和编程都非常有帮助。

weixin_47712251的博客 1413

全15万字丨PyTorch 深度学习实践、基础知识体系全集;忘记时,请时常回顾。

本篇博客介绍的知识是——深度学习之PyThon框架基础。这是深度学习/神经网络的基础,多次回顾,会有不一样的感受。书读百遍,其义自见。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 5787

S/4HANA 迁移前的必修课:用 SCMON 找出沉睡的自定义代码

SAP S/4HANA迁移项目中,SCMON工具能有效解决历史代码评估难题。通过监控ABAP对象调用情况,SCMON可识别40-60%处于"沉睡"状态的自定义代码。配置时需注意监控周期(建议3-6个月)和数据保留期(建议1年),并配合Time Slices功能进行时段分析。工具导出的调用数据可与测试覆盖率对比,帮助决策代码迁移优先级。实际应用中需结合业务场景,建议与SUSG工具配合使用,并保持持续监控。SCMON虽不能完全替代人工判断,但其提供的客观数据能显著提升迁移决策的科学性,建议在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 291

C语言--结构体数组和结构体指针

 结构体是我们自己定义的一种新的数据类型, 同样可以有结构数组和结构指针。  1.结构体数组 具有相同结构体类型的变量构成的数组,称为结构体数组。与普通数值型数组的不同之处在于每个数组元素都是一个结构体变量,它们都分别包含各个成员项。 定义结构体数组一般形式是 struct 结构体名 { 成员列表 }数组名[数组长度]; 或者: 先声明一个结构体类型,然后再定义结构体数组 结构...

樊小辫的博客 3万+

【AI Agent】Hermes Agent解析

Hermes Agent:一个具备持久化学习能力的开源AI Agent框架 核心特点: 突破传统Agent的"无状态困境",通过记忆系统(SQLite+FTS5全文检索)实现跨会话经验积累 支持200+模型自由切换,11种模型家族和15+平台接入 五层架构设计(入口层、编排层、推理层、工具执行层、存储层)实现平台无关性 47+内置工具和动态技能沉淀机制,支持从任务执行中自动提炼可复用Skill 独特的四层记忆体系(会话/每日/长期/向量索引)和辩证式用户建模 与传统Agent对比: 具备自我进化能力,通过A

sysu_lluozh 931

C语言结构体的定义与使用、结构体数组、指向结构体的指针(有代码详解)

结构体的定义与使用 结构体是一种构造数据类型 把不同类型的数据组合成一个整体 结构体的定义形式: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子: struct stu{ char name[]; //姓...

summer 10万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

Jacky_Feng的博客 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C 语言结构体数组指针以及函数

结构体数组指针 指针变量可以指向一个结构体数组,这时指针变量的值是整个数组的首地址。 设 ps 为指向结构体数组的指针变量,则 ps 也指向该结构体数组的第 0个元素,ps+1 指向第一个元素,ps+i 则指向第 i 元素,这与普通数组的情况是一样的。 【示例】用指针变量输出结构体数组。 #include &lt;stdio.h&gt; struct stu{ int num; c...

weixin_42528287的博客 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C语言结构体指针数组讲解笔记

场景为什么用二级指针如何操作初始化学生数组动态分配指针数组存储每个学生每个学生结构体需要独立内存存储姓名字符串长度不固定增加/删除学生数组长度动态变化函数传递函数内可以修改原数组函数参数为STU **s。

嵌入式新兵 1045

C语言 结构体 数组 指针

C语言 结构体

xuesnowce的博客 1214

c语言指向结构体的指针_指向C中结构数组的指针

c语言指向结构体的指针 指向C中结构数组的指针 (Pointer to Array of Structures in C) Like we have array of integers, array of pointers etc, we can also have array of structure variables. And to use the array of structure v...

cunfen6312的博客 1139

c语言笔记 结构体数组指针的运用

学习结构体的一维数组,可以定义一个班级; 学习结构体的二维数组,可以定义一个学校,很多个班; 学习结构体的三维数组,可以定义一个区域的学校,很多个学校,很多个班; 下面我们来探究一下这些结构体内部成员赋值的语法。         结构体数值指针是一种指针类型,通常指向与结构体数组以及结构体二维数组。这些看起来很高级,其实跟普通的指针数组与一维,二维数组的关系是一样的,在之前的文章里有探讨过,结构体类型的语法是表达上有所不同,但是本质是一样的。

2201_75840339的博客 1231

C语言:结构体数组与结构体指针

所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,c语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。表示一个班级有五个学生当对数组中全部元素赋值时,也可不给出数组长度,例如;示例:计算全班学生的总成绩、平均成绩以及140分一的人数。运行结果: sum=707.50 average=141.50 num_140=2。

Dola的博客 1367

C语言:函数指针、数组、结构体

在 C 语言中,结构体是一种自定义用户自定义数据类型,允许将不同类型的数据组合成一个整体,用于表示具有多个相关属性的复杂对象(如学生、书籍、坐标等)。二维数组在内存中是按行连续存储的,即先存储第 0 行的所有元素,再存储第 1 行,以此类推。函数指针:它是指针,指向函数的指针。

2301_79836590的博客 1187

C语言结构体中的成员数组与指针的区别

文章目录前言问题NULL指针分析代码一分析代码二结构体中的指针与数组差别分析代码三分析代码四分析前面问题总结 前言 1.博主实力有限,博文有什么错误,请你斧正,感谢! 2.本文借签陈皓的文章:《C语言结构体中的成员数组与指针》 问题 #include <stdio.h> struct str{ int len; char s[10]; }; struct foo { struct str *a; }; int main(int argc,

qq_55439426的博客 1402

C语言结构体中指针指向数组,指向结构体类型数组的指针的使用

指向结构体类型数组的指针的使用定义一个结构体类型数组,其数组名是数组的首地址,下面是关于指向结构体类型数组的指针的使用具体介绍,欢迎阅读!定义结构体类型的指针,既可以指向数组的元素,也可以指向数组,在使用时要加以区分。[例7-3] 在例7 - 2中定义了结构体类型,根据此类型再定义结构体数组及指向结构体类型的指针。struct data{intday,month,year;};struct stu...

weixin_33603681的博客 7151

c语言中结构体定义函数指针数组,C语言 结构体相干 函数 指针 数组

C语言 结构体相关 函数 指针 数组.作者 : 万境绝尘转载请注明出处 :http://www.hanshuliang.com/?post=30.结构体概述 : 结构体是 多个 变量的集合, 变量的类型可以不同;-- 可进行的操作 : 结构体可以进行 拷贝 赋值操作, 可以作为 函数参数 和 函数返回值;1. 结构体的基本使用结构体声明 : struct 结构标记 {结构成员} 普通变量;-- ...

weixin_31659557的博客 1260

C语言里面数组,指针,结构体的一些见解

C语言里面数组,指针,结构体的一些见解 1. 数组 1.1 数组概念 在c语言里面有数组这个概念, 就像传统的int a[5], char c[10] 其中a和c都为数组(a为int类型的数组, c为char类型的数组), 数组和普通变量的区别就在于,他是一段连续的区域,在虚拟地址上是连续的,我们可以通过下标其中任意一个元素,第i个元素的地址为a0 + (i-1)*sizeof(T)(其中a0为数组收地址,T为数组的类型)。 2. 指针 2.1 指针概念 c语言里面有指针这个概念,这也是c语言本身很重要的一

weixin_39393640的博客 663
上一篇: java调用shell命令并获取执行结果
下一篇: const char *与LPCWSTR 不兼容
ly0303521
博客等级 码龄17年 135粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值