尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
结构体指针做为输入型参数和返回参数为结构体指针
结构体指针做为输入型参数和返回参数为结构体指针结构体指针运用C的代码其中的原理在代码中有注释运行结果结构体指针运用这个是测试笔记。C的代码其中的原理在代码中有注释#includestdio.htypedefstruct// 创建一个结构体{intdisk;intfile;}SCFILE;SCFILE*open(void)// 创建一个函数返回值是结构体指针{SCFILE*hdlNULL;// 创建一个结构体指针 初始化的时候需要 赋值 NULL避免野指针printf(open star 1\n);hdl(SCFILE*)malloc(sizeof(SCFILE));// 给指针分配指向的地址printf(hdl value %p\n,hdl);// 直接打印 hdl 表示该指针的指向的地址 即该结构体指针存的值printf(*hdl value %d\n,*hdl);// *p 表示的指针进行解引用 由于结构体的存储特性直接 *hdl 表示结构体中的第一个元素的值printf(hdl value %p\n,hdl);// 表示该结构体指针的地址printf(open 2\n);hdl-disk10;// 给结构体中的元素赋值printf(open 3\n);hdl-file20;// 给结构体中的元素赋值printf(open 4\n);printf(*hdl value %d\n,*hdl);// 第一个元素的值printf(hdl value %p\n,hdl);// 结构体指针里指向的地址即该结构体指针存的值printf(hdl value %p\n,hdl);// 该结构体指针的地址printf(open end\n);returnhdl;}// 使用二重指针 // 直接传入指针的地址intfffopen(SCFILE**hdl){*hdlopen();// 这里直接把返回的指针即地址值赋值给传入的指针的地址那么就把传入指针指向的地方改变了printf(4\n);if(hdlNULL){printf(sAPI_fopen err\r\n);return-1;}printf(5\n);printf(hdl-disk %d\n,(*hdl)-disk);printf(hdl-file %d\n,(*hdl)-file);return0;}intfffopen1(SCFILE*hdl){int*aaNULL;SCFILE*pHd(SCFILE*)malloc(sizeof(SCFILE));printf(sizeof(pHd) %d\n,sizeof(pHd));// 可以测出不管什么类型的指针其大小都是一样的我的这里是 4字节和运行的机器位数有关printf(sizeof(aa) %d\n,sizeof(aa));printf(hdl value %p\n,hdl);// hdl 存储的地址值printf(*hdl value %d\n,*hdl);// hdl 第一个元素的值printf(hdl addr %p\n,hdl);// hdl 的地址printf(\n);printf(pHd value %p\n,pHd);// phd 存储的值printf(*hdl value %d\n,*pHd);// pHd 第一个元素的值printf(pHd addr %p\n,pHd);// pHd 的地址pHdhdl;// 把 hdl 中存储的地址值赋值给 pHd 即pHd 指向了那个地址printf(4\n);printf(hdl value %p\n,hdl);// hdl 存储的地址值printf(*hdl value %d\n,*hdl);// hdl 第一个元素的值printf(hdl addr %p\n,hdl);// hdl 的地址printf(\n);printf(pHd value %p\n,pHd);// phd 存储的值printf(*hdl value %d\n,*pHd);// pHd 第一个元素的值printf(pHd addr %p\n,pHd);// pHd 的地址*pHd*open();// 把open函数返回的赋值给 pHd open返回的是结构体指针 加上* 表示解引用 即把两边的解引用出来赋值给新的因为新的也指向传入的地址//pHd open(); //如果写成这种是无法通过输入型参数把值返回的因为这样表示返回的指针赋值即另外一个地址给另外一个指针传入的就无法改变printf(5\n);printf(hdl value %p\n,hdl);// hdl 存储的地址值printf(*hdl value %d\n,*hdl);// hdl 第一个元素的值printf(hdl addr %p\n,hdl);// hdl 的地址printf(\n);printf(pHd value %p\n,pHd);// phd 存储的值printf(*hdl value %d\n,*pHd);// pHd 第一个元素的值printf(pHd addr %p\n,pHd);// pHd 的地址if(hdlNULL){printf(sAPI_fopen err\r\n);return-1;}printf(6\n);printf(hdl-disk %d\n,pHd-disk);// 由于 pHd 和 hdl 指向的地址是同一块所以打印出的是一样的printf(hdl-file %d\n,pHd-file);printf(hdl-disk %d\n,hdl-disk);printf(hdl-file %d\n,hdl-file);return0;}voidmain(void){#if0SCFILE*hdl(SCFILE*)malloc(sizeof(SCFILE));printf(11\n);printf(hdl value %p\n,hdl);// hdl 存储的地址值printf(*hdl value %d\n,*hdl);// hdl 第一个元素的值printf(hdl addr %p\n,hdl);// hdl 的地址printf(1111\n);if(fffopen(hdl)-1){printf(error);}#elseSCFILE*hdl(SCFILE*)malloc(sizeof(SCFILE));printf(11\n);printf(hdl value %p\n,hdl);// hdl 存储的地址值printf(*hdl value %d\n,*hdl);// hdl 第一个元素的值printf(hdl addr %p\n,hdl);// hdl 的地址printf(1111\n);if(fffopen1(hdl)-1){printf(error);}#endifprintf(OK\n);printf(hdl-disk %d\n,hdl-disk);printf(hdl-file %d\n,hdl-file);}运行结果
RELATED

相关推荐

2026装修封窗为什么必选系统门窗?内行不说的真相都在这里

2026装修封窗为什么必选系统门窗?内行不说的真相都在这里

装修封窗绝对是最容易“省小钱、亏大钱”的隐蔽工程。不少业主为了压缩装修预算,选择性价比看似更高的普通断桥铝拼装窗。可入住后才发现,窗户频繁漏风、暴雨天渗水严重、室外噪音穿透室内,还存在夏季闷热憋闷、冬季玻璃结露发霉等诸多问题。…

📅 2026/9/13 12:19:50
QQ空间导出助手:终极完整指南,快速永久备份你的青春记忆

QQ空间导出助手:终极完整指南,快速永久备份你的青春记忆

QQ空间导出助手:终极完整指南,快速永久备份你的青春记忆 【免费下载链接】QZoneExport QQ空间导出助手,用于备份QQ空间的说说、日志、私密日记、相册、视频、留言板、QQ好友、收藏夹、分享、最近访客为文件,便于迁移与保存 项目…

📅 2026/9/7 22:45:42
食品PLM头部标杆一半科技,以爱研PLM建立行业研发新高度!

食品PLM头部标杆一半科技,以爱研PLM建立行业研发新高度!

2026年,食品行业的“隐形战争”已经打响。不再是铺天盖地的广告,也不再是绞尽脑汁的营销,而是回归到了最根本的“研发”本身。当消费者的口味三天一变,当监管的法规一年三改,当原料的价格像过山车一样起伏,…

📅 2026/9/10 9:24:02
MORE NEWS

更多资讯

📰

Flutter+OpenHarmony开发健康睡眠记录App实践

1. 项目背景与核心价值在万物互联的智能设备时代,健康管理类应用正成为移动开发的热门方向。这次我们要开发的是一个基于Flutter框架、运行在OpenHarmony系统上的身体健康状况记录App,重点实现睡眠记录功能模块。选择这个技术栈组合主要基于以下考量&…

📰

EGE图形库入门:环境配置、坐标体系与绘图函数实操

1. 为什么要用EGE学图形编程,而不是直接上OpenGL先聊点实在的。EGE全称Easy Graphics Engine,是国内开发者维护的一个轻量级C/C图形库,核心用途是在Windows下用极低的门槛画出点、线、面、图片和文字,写出属于自己的小游戏或可视化…

📰

8款实用AI论文写作工具横向实测,本硕博论文避坑全攻略

前言:AI 写论文乱象频发,实测 8 款工具理清适配边界 每到毕业季,本科生、硕博生都会集中寻找 AI 论文辅助工具,市面各类写作软件层出不穷。但普遍存在几类硬伤:虚假参考文献、无法匹配本校格式、不支持公式代码生成、A…

📰

基于vux与vue全家桶的微信商城公众号接入实践

简介:基于 vux 与 vue 全家桶的微信商城公众号接入项目,专为有 Vue 基础、想实战移动端商城开发的中级前端或全栈学习者准备,适合作为二次开发或毕业设计的参照模板。它帮助读者梳理公众号 H5 商城从项目构建、路由分配到数据交互的完整链路&…

📰

Unity2019中UMP打包后视频不播放?从dll到路径的排查清单

先说个结论:在Unity2019里用UMP(Universal Media Player)做视频播放,编辑器下一切正常、一打包就出问题,这几乎是每个用过UMP的人都会遇到的坎。你搜到的那些“打包exe不播放”“exe在其他电脑运行不播放”的帖子&…

📰

AI运动耳机:耳道生物传感的原理与实战指南

1. 这不是耳机,是贴在耳道里的微型运动生理监测站“AI耳机”这个词最近被刷屏,但多数人还停留在“能听歌降噪语音助手”的认知里。直到上个月我在健身房戴了一副标着“运动健康模式”的新耳机,跑步机刚调到配速7km/h,耳机就轻声提…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬