【C语言】结构体类型名、变量名以及typedef

文章目录

  • 分类判断
  • 结构体成员的使用
  • typedef


分类判断

struct tag
{char m;int i;
}p;

假设定义了上面这一个结构体,tag 就是类型名, p 就是变量名, mi 就是结构体成员列表。
可以这么记,括号前面的是类型名,括号后面的是变量名。

一般情况下,类型名,变量名,结构体成员至少需要两个才能构成结构体。


结构体成员的使用

int main()
{tag.i = 123;p.i = 123;return 0;
}

在这里插入图片描述
通过上图可以看到我们通过类型名去直接使用结构体变量时出现了错误,而变量名使用结构体变量没有报错。所以,结构体里面是不能直接通过类型名去使用变量的。正确的定义如下:

int main()
{struct tag  s;s.i = 123;return 0;
}

这是main函数中,我们使用struct tag s定义了一个结构体变量s,并给它的成员变量i赋值为123。另外,还有一个全局的结构体变量p,也给它的成员变量i赋值为123。

typedef

typedef为现有类型创建别名,定义易于记忆的类型名。

它的作用说在不改变变量名的前提下,用typedef。给结构体起个别名,往往可以用在原来变量名很长的情况下

现在我们尝试运行下下面的代码

typedef struct tag
{char m;int i;
}p;int main()
{struct tag  s;s.i = 123;p.i = 123;return 0;
}

在这里插入图片描述
我们会发现两个情况

  1. s被成功定义了
  2. 原来可以的变量名p不可用了

原因是s虽然被成功定义了,但是p因为typedef的存在导致变量名不是变量名,而成为了类型名。我们把光标放在p上看看。
在这里插入图片描述

可以看到此处的p隐指的是typedef struct tag p,所以此处的L因为typedef的存在变成了typedef struct tag p的别名,也就是说p成为了缩减版的类型名。

当然,这也是有解决方法,只要把p当成变量名使用就行了,具体情况如下

typedef struct tag
{char m;int i;
}p;int main()
{struct tag  s;s.i = 123;//p.i = 123;p d;d.i = 123;return 0;
}

好了,这就是全部了,这篇博客是我从别人那里借鉴的学习笔记,大家可以看看那个大佬的

链接: link

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【vue核心技术实战精讲】1.1 Vue开篇介绍 + 1.2 Vue的起步 和 插值表达式

文章目录 准备开始适应人群vue 框架学习路线一、vue 基础1、历史介绍2、前端框架与库的区别? 二、vue的起步 和 插值表达式Stage 1:下载包,并放入项目中Stage 2:编码Stage 3:源码 与 效果 准备开始 适应人群 有一定的HTML/CSS/…

Android仿智联详情

很久没有发文章了,这一年多一直在卷。最近由于疫情的原因,很多公司都在给员工发“毕业证”,我也很荣幸拿到了“毕业证”。不知道是应该开心还是桑心,北京最近因为疫情基本都居家办公,而我也开始了做简历,刷…

OpenCV C++ 图像处理实战 ——《物体数量计数与尺寸测量》

OpenCV C++ 图像处理实战 ——《物体数量计数与尺寸测量》 一、结果演示二、多尺度自适应Gamma矫正的低照度图像增强三、轮廓计算与尺寸测量3.1 图像二值化3.2 轮廓提取3.3 物体计数与尺寸测量四、源码测试图像下载总结一、结果演示 二、多尺度自

java数据结构与算法刷题-----LeetCode135. 分发糖果

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 左右遍历2. 进阶:常数空间遍历,升序降…

HCIA复习实验题(静态路由综合实验)

一、实验拓扑 二、实验划分 三、实验需求 如上图所见; 四、实验结果 1.实现内网通; (1)配置R1~R5的接口IP(以及环回接口); R1接口: [R1]int GigabitEthernet 0/0/0 [R1-Gigab…

低代码 + 大模型,让业务系统智能化,加速想法落地

1 AI 时代下的应用 大模型来了,每个行业/领域都在融合大模型。作为低代码开发的探索者,今天我们来聊聊业务系统是如何融合大模型实现智能化的。 我们用百度内部实际应用场景来举例。比如请假,智能业务助手可以帮你: 了解…

从零开始写 Docker(七)---实现 mydocker commit 打包容器成镜像

本文为从零开始写 Docker 系列第七篇,实现类似 docker commit 的功能,把运行状态的容器存储成镜像保存下来。 完整代码见:https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识: 核心原…

Jmeter-基础元件使用(二)

一、Jmeter属性 当我们想要在不同线程组中使用某变量,就需要使用属,此时Jmeter属性的设置需要函数来进行set和get操作 1.创建set函数 2.然后采用Beanshell取样器进行函数执行 3.调用全局变量pro_id 4.将上面生成的函数字符串粘贴到另一个线程组即可…

合合信息扫描全能王亮相静安区3·15活动,AI扫描带来绿色消费新体验

保护消费者的合法权益,是全社会的共同责任。为优化消费环境、促进品质消费高地建设,打造安全优质和谐的消费环境,上海静安区消保委于3月15日举办静安区2024年“315”国际消费者权益日活动。 “激发消费活力,绿色低碳同行”是本次3…

C语言字符函数和字符串函数详解

Hello, 大家好,我是一代,今天给大家带来有关字符函数和字符串函数的有关知识 所属专栏:C语言 创作不易,望得到各位佬们的互三呦 一.字符函数 在C语言中有一些函数是专门为字符设计的,这些函数的使用都需要包含一个头文…

管理类联考–复试–英文面试–问题–WhatWhyHow--纯英文汇总版

文章目录 Do you have any hobbies? What are you interested in? What do you usually do in your spare time? Could you tell me something about your family? Could you briefly introduce your family? What is your hometown like? Please tell me so…

在Arm 虚拟硬件(AVH)部署深度学习OCR算法

AI算法的嵌入式部署 AI算法在独立的设备上运行其实就是行业内的嵌入式AI的概念, 大致过程如下: 开发AI模型, 2.对数据集进行处理, 3.训练AI模型并验证效果, 4.转成ONNX格式(ONNX:万金油中间格式,给模型优化和部署带来了更多可能性)或者借助libtorch或者TensorFlow来部署C++版…

Prometheus+Grafana 监控Tongweb7

文章目录 1.准备工作2.Tongweb7部署3.Prometheus部署4.上传jar包并配置Tongweb75.Prometheus配置6.安装和配置Grafana 1.准备工作 本次参考:Prometheus监控Tongweb容器 1.使用虚拟机ip:192.168.10.51(tongweb),192.1…

day14-SpringBoot 原理篇

一、配置优先级 SpringBoot 中支持三种格式的配置文件: 注意事项 虽然 springboot 支持多种格式配置文件,但是在项目开发时,推荐统一使用一种格式的配置 (yml 是主流)。 配置文件优先级排名(从高到低&…

【设计模式】Java 设计模式之模板命令模式(Command)

命令模式(Command)的深入分析与实战解读 一、概述 命令模式是一种将请求封装为对象从而使你可用不同的请求把客户端与接受请求的对象解耦的模式。在命令模式中,命令对象使得发送者与接收者之间解耦,发送者通过命令对象来执行请求…

嵌套循环实现九九乘法表

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答。 案例描述 利用嵌套循环&#xff0c;实现九九乘法表。 代码 #include <iostream> #include <Windows.h>using namespace std;int main(void) {//外层循环执行一次&#…

v-bind 绑定 class 与 style 基础用法

使用 v-bind 指令绑定 class 和 style 时语法相对复杂一些&#xff0c;这两者是可以互相替代的&#xff0c;均用于响应更新HTML元素的属性&#xff0c; v-bind 绑定 class 属性可以改写成绑定 style 属性&#xff0c;只是 css 属性位置变了而已。 1. 绑定 class 属性 1.1 数组…

学了 Python 但又感觉没学 Python 不如重学 Python - day4(数据类型:列表)

目录 1、创建列表 2、列表基本操作 3、索引与分片 4、矩阵 5、常用列表方法 &#xff08;1&#xff09;append 与 extend 方法 &#xff08;2&#xff09;insert 方法 &#xff08;3&#xff09;remove 与 pop 方法 &#xff08;4&#xff09;del 语句与 clear 方法 …

conda创建环境网络报错解决办法

文章目录 一、报错示例&#xff1a;二、解决办法&#xff1a;2.1 查看配置 conda config --show-sources2.2 修改文件 /home/XXXX/.condarc 一、报错示例&#xff1a; UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel nvidia <http://mirrors.tuna.tsinghua.ed…

【机器学习-05】模型的评估与选择

在前面【机器学习-01】机器学习基本概念与建模流程的文章中我们已经知道了机器学习的一些基本概念和模型构建的流程&#xff0c;本章我们将介绍模型训练出来后如何对模型进行评估和选择等 1、 误差与过拟合 学习器对样本的实际预测结果与真实值之间的差异&#xff0c;我们称之…