【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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年超声波清洗机选购攻略,高性价超声波清洗机推荐,看这篇就够

随着科技的飞速发展和生活品质的逐步提升,超声波清洗机已经成为了现代家庭不可或缺的清洁工具。它以独特的超声波清洁技术,能够深入物品的微小缝隙,有效去除污垢和细菌,为用户提供一种安全、高效且环保的清洁解决方案。2024年&…

处理器方法的参数

处理器方法的参数: 处理器方法可以包含以下四类参数,这些参数会在系统调用时由系统自动赋值,即程序员可在方法内直接使用: HttpServletRequestHttpServletResponseHttpSession请求中所携带的请求参数 控制器方法: 前面三个参数怎…

Android 系统源码快速入门

Android源码快速入门 今天分享的内容是Android源码快速入门,主要分为以下几个步骤: * 硬件要求 * 虚拟机安装 * 开发环境搭建 * 下载编译源码 * 从一个简单的实际开发需求体验 Framework 开发硬件要求 用于 Android Framework 开发的电脑需要较强的 C…

黑平台避雷!3月上半月FX110曝光68家,无监管成常态

黑平台层出不穷,反诈骗是一场长期的斗争。以半个月为周期,FX110网对虚假交易商进行常态化曝光,极力压缩黑平台的生存空间,减少骗局的发生。 3月上半月,FX110网再曝光黑平台68家,此次曝光的黑平台大都对监管…

深入探究process.env.NODE_ENV如何区分环境

公众号:程序员白特,欢迎一起学习交流~ 通常我们在开发中需要区分当前代码的运行环境是dev、test、prod环境,以便我们进行相对应的项目配置,比如是否开启sourceMap,api地址切换等。 而我们区分环境一般都是通过process.…

02_设计模式

文章目录 设计模式设计模式分类UML类图设计模式的原则 常用设计模式创建型设计模式单例设计模式饿汉模式懒汉模式(线程不安全)懒汉模式(线程安全)- Synchronized懒汉模式(线程安全)- Double Check懒汉模式&…

mysql不等于<>取特定值反向条件的时候字段有null值或空值读取不到数据

#小李子9479# 有如下的数据结构 &#xff0c;st_dl tinyint(4)&#xff0c;想从中读取不等于1的数据 于是写了一个sql语句 select * from tbname where st_dl<>1 返回数据为0。 修改一下 select * from tbname where IFNULL(st_dl,0)<>1 正确返回数据 IFNUL…

【深度学习与神经网络】MNIST手写数字识别1

简单的全连接层 导入相应库 import torch import numpy as np from torch import nn,optim from torch.autograd import Variable import matplotlib.pyplot as plt from torchvision import datasets, transforms from torch.utils.data import DataLoader读入数据并转为ten…

深度学习之本地部署大模型ChatGLM3-6B【大模型】【报错】

文章目录 0.前言1.模型下载2.配置环境2.1 下载项目文件2.2 配置环境 3.开始推理4.总结 0.前言 本博客将介绍ChatGLM3-6B大模型在Ubuntu上的本地部署教程 1.模型下载 由于毛毛张的服务器服务无法科学上网&#xff0c;所以模型的相关文件必须现在本地下载好&#xff0c;再上传到…

【ai技术】(1):发现一个大模型可视化项目,使用nodejs编写的,llm-viz,可以本地运行展示大模型结构。

1&#xff0c;关于项目 https://www.bilibili.com/video/BV1eF4m1c7NC/ 【ai技术】&#xff08;1&#xff09;&#xff1a;发现一个大模型可视化项目&#xff0c;使用nodejs编写的&#xff0c;llm-viz&#xff0c;可以本地运行展示大模型结构。 https://github.com/bbycroft/l…

k8s集群架构维护k8s集群以及搭建k8s集群以及k8s集群的常见问题

一、k8s架构 Kubernetes&#xff08;K8s&#xff09;是一个由Google主导开发的开源容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。它的设计目标是简化容器化应用程序在生产环境中的部署和运营。Kubernetes的架构设计复杂且高效&#xff0c;主要包括以下几…

再谈EMC Unity存储系统内存DIMM问题

以前写过一篇关于EMC Unity 存储系统的DIMM的介绍文章&#xff0c;但是最近还是遇到很多关于内存的问题&#xff0c;还有一些退货&#xff0c;所以有必要再写一篇关于EMC Unity 内存方面的问题&#xff0c;供朋友们参考。如果还有疑问&#xff0c;可以加vx&#xff1a;StorageE…

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

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

MySQL 数据库设计范式

第一范式&#xff08;1NF&#xff09; 每一列都是不可分割的原子数据项第二范式&#xff08;2NF&#xff09; 在1NF的基础上&#xff0c;非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖) 1.函数依赖A->B&#xff0c;如果通过A属性(属性组)的值…

蓝桥杯 2023 省B 飞机降落

首先&#xff0c;这题要求的数据量比较少&#xff0c;我们可以考虑考虑暴力解法。 这题可能难在很多情况的考虑&#xff0c;比如说&#xff1a; 现在时间是10&#xff0c;有个飞机20才到&#xff0c;我们是可以干等10分钟。 #include <iostream> #include <…

编织效率之梦:Visual Studio与Windows快捷键指南

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 前言&#xff1a; 常用快捷键整理 (用加粗标注的是我个人使用时常用的&#xff0c;其实这个…

2024-03-19 作业

作业要求&#xff1a; 1> 将白天课堂代码重新实现一遍&#xff1a; select实现的TCP并发服务器 poll实现的TCP客户端 2> 君子作业 select实现的TCP客户端 poll实现的TCP并发服务器 作业1&#xff1a; 运行代码&#xff1a; select实现的TCP并发服务器 #include<myh…

[项目设计]基于websocket实现网络对战五子棋

项目介绍 该项目旨在实现一个网页端的在线五子棋&#xff0c;将实现登陆、好友、房间、对战、观战、聊天等功能 完成该项目需要了解C、数据库MySQL、基础前端HTML/CSS/JS/Ajax、网络协议WebSocket 项目源码&#xff1a;azhe1/online_gobang - 码云 - 开源中国 (gitee.com) …

国产-高精度、可编程数字温度传感芯片-MY18E20

由工采代理的MY18E20是一款国产高精度可编程的数字模拟混合信号温度传感芯片&#xff1b;感温原理基于CMOS半导体PN节温度与带隙电压的特性关系&#xff0c;经过小信号放大、模数转换、数字校准补偿后&#xff0c;数字总线输出&#xff0c;具有精度高、一致性好、测温快、功耗低…

vue前端解析jwt

vue前端解析jwt 我们可以用在线解析看解析的结果&#xff1a;https://www.lddgo.net/encrypt/jwt-decrypt 但是如果在前端需要解析token&#xff0c;拿到其中的权限信息&#xff0c;可以这样解决。 在线的&#xff1a; 完美解决&#xff1a; 代码&#xff1a; function par…