【C/C++】typedef用法

news2024/9/21 0:50:53

 typedef用法讲解,时隔半年,再看typedef。

🎁typedef可以简化结构体关键字 

#include<iostream>
using namespace std;

struct Person
{
	char name[64];
	int age;	
};

void test01()
{
	struct Person p = { "张三",18 };//不用typedef,struct Person合在一起代表数据类型
}


int main()
{

test01();
return 0;
}

 写struct时每次都要写struct Person,struct Student,这种写法比较麻烦,因此使用typedef可以简化关键字。

两种写法:

🎀第一种写法

#include<iostream>
using namespace std;

struct Person
{
	char name[64];
	int age;	
};
typedef struct Person MyPerson;

void test01()
{
	struct Person p = { "张三",18 };//不用typedef,struct Person合在一起代表数据类型
    MyPerson p1={ "坤坤",20};//MyPerson就相当于一个数据类型了
}


int main()
{

test01();
return 0;
}

 🎀第二种写法

#include<iostream>
using namespace std;

 typedef struct Person
 {
	char name[64];
	int age;	
 }MyPerson;//这样定义又方便许多


void test01()
{
	struct Person p = { "张三",18 };//不用typedef,struct Person合在一起代表数据类型
    MyPerson p1={ "坤坤",20};//MyPerson就相当于一个数据类型了
}


int main()
{

test01();
return 0;
}

🎁区分数据类型

char* p1, p2;

此处p1和p2是什么数据类型,我一眼丁真,都是char *。然而,事实并非如此。

#include<iostream>
using namespace std;

void test02()
{
	char* p1, p2;//p1和p2都是char *类型吗,事实上p1是char*,p2是char 
	printf("%s\n", typeid(p1).name());//char*
	printf("%s\n", typeid(p2).name());//char

}

int main()
{
	test02();
	return 0;
}

事实证明,p1是char*,而p2是char。这容易错,平时经常写int a,b;之类的,a,b都是int类型确实没错,但这个地方*只修饰了p1,并没有修饰p2,如果要使p1,p2都是char *类型,应该这样写.

char *p1,*p2;

还有一种写法,就是用typedef,这样不容易出错。

#include<iostream>
using namespace std;

void test02()
{
	typedef char * Pchar;
    Pchar p1,p2;
	printf("%s\n", typeid(p1).name());//char*
	printf("%s\n", typeid(p2).name());//char*

}

int main()
{
	test02();
	return 0;
}

🎁提高移植性,方便修改

下面定义了一堆的long long,后期要修改,要把long long一个一个改,麻烦

//直接使用long long的话,如果后期由于变化要改成int,要一个一个的改
long long a;
long long b;
long long c;
long long d;
long long e;
long long f;
long long g;
long long h;

使用typedef到时候只要修改typedef后面的就行,而且ll 不比long long 短很多吗,写起来也方便很多

//如果后期要修改,我直接修改typedef后面的数据类型,不用动ll
//而且typedef之后也能减少打字,long long 这么长直接变成了短的ll
typedef long long ll;
ll a;
ll b;
ll c;
ll d;
ll e;
ll f;

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

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

相关文章

【设计模式-代理】

定义 代理模式是一种结构型设计模式&#xff0c;它提供了对象的替代者或占位符&#xff0c;用来控制对这个对象的访问。通过代理模式&#xff0c;一个类可以代表另一个类来执行某些操作。这种模式常用于增强对象的功能或控制对对象的访问。 特点 控制访问&#xff1a;代理模…

day01 1.c++对c的扩充

#include <iostream>using namespace std;int main() {string s1;cout << "请输入一个字符串&#xff1a;";getline(cin,s1);int count10,count20,count30,count40;int len s1.length();for(int i0;i<len;i){if((s1[i]>a&&s1[i]<z) ||…

BeanPostProcessor和Ordered

1. 概述 BeanPostProcessor 和 Ordered 接口用于在Spring容器初始化Bean的过程中进行自定义处理&#xff0c;并控制处理顺序 2. BeanPostProcessor BeanPostProcessor 接口允许你在Spring容器初始化Bean的前后对Bean进行自定义处理。它有两个方法&#xff1a; postProcessB…

zabbix对接Grafana

1.grafana安装 Download Grafana | Grafana Labs sudo yum install -y https://dl.grafana.com/oss/release/grafana-11.1.4-1.x86_64.rpm 2.zabbix插件安装 Grafana 默认并没有 zabbix 数据源的支持&#xff0c;只有安装了zabbix插件&#xff0c;才可以在grafana中添加zabbi…

峟思固定测斜仪的工作原理与应用

固定测斜仪作为一种精密的测量仪器&#xff0c;在地质工程、土木工程、矿山安全等领域中发挥着至关重要的作用。它通过测量土体或岩体内部的水平位移&#xff0c;为工程安全监测提供了可靠的数据支持。本文将详细介绍固定测斜仪的工作原理、结构组成以及其在实际应用中的表现。…

一文读懂 DDD领域驱动设计

DDD&#xff08;Domain-Driven Design&#xff0c;领域驱动设计&#xff09;是一种软件开发方法&#xff0c;它强调软件系统设计应该以问题领域为中心&#xff0c;而不是技术实现为主导。DDD通过一系列手段如统一语言、业务抽象、领域划分和领域建模等来控制软件复杂度&#xf…

快手小店自动回复机器人脚本

快手小店自动回复机器人是一种利用人工智能AI技术&#xff0c;能够根据用户的会话咨询内容自动回复的工具。这种机器人可以帮助快手小店主快速、高效地回复客户消息&#xff0c;提升店铺的客户服务质量和销售效率。 甜羊浏览器是一款基于Chromium内核开发的国产浏览器&#xff…

OpenAI API: How to count tokens before API request

题意&#xff1a;“OpenAI API&#xff1a;如何在 API 请求之前计算令牌数量” 问题背景&#xff1a; I would like to count the tokens of my OpenAI API request in R before sending it (version gpt-3.5-turbo). Since the OpenAI API has rate limits, this seems impor…

记录一次target引发的事故:一直提示数据库连接超时

你们好&#xff0c;我是金金金。 场景 启动项目&#xff0c;一直报数据库连接超时&#xff1a; The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. The error may exist in com/xuecheng/sy…

【分立元件】以太网变压器中心抽头有什么作用?

在以太网设备中,通过 PHY 接 RJ45 时,中间都会加一个网络变压器。 但查看不同产品的设计,有的变压器中心抽头接电源,有的又接电容到地。而且接电源时,电源值又可以不一样,3.3V,2.5V,1.8V都有。这个变压器的中心抽头作用到底是什么呢? 中心抽头作用 1. 通过提…

云渲染解决:笔记本渲染很伤电脑吗?如何保护你的电脑?

笔记本电脑是设计师、视频剪辑师和3D艺术家的重要工具&#xff0c;提供随时随地的创作能力。但渲染工作可能对笔记本造成损害。本文将分析渲染对笔记本的影响&#xff0c;并提供减少损伤的策略&#xff0c;帮助用户保持设备在创作中的高效与安全。 一、笔记本电脑渲染的影响 电…

【html+css 绚丽Loading】 000020 三才流转盘

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

xss-labs通关攻略 11-15关

第十一关&#xff1a;less-11 步骤一&#xff1a;利用burp抓包 步骤二&#xff1a;添加referer:click me!" type"button" οnmοuseοver"alert(/xss/)进行放包 第十二关&#xff1a;less-12 步骤一&#xff1a;利用burp抓包 步骤二&#xff1a;修改User A…

快团团幸运大转盘是是什么?团长如何使用?

幸运大转盘是什么&#xff1f; 1、团员可以在团内转转盘进行抽奖 2、团员获得的奖励有优惠券&#xff08;无门槛、满减&#xff09;&#xff0c;实物礼品两种形式 3、团员可通过在团内下单&#xff0c;来增加转转盘的次数 4、团长可自行设定奖品、中奖概率&#xff08;中奖…

Linux单用户模式和救援模式

Linux单用户模式和救援模式 单用户模式Initramfs模式进入救援模式 修改被救援Linux的配置挂载boot和/切根 单用户模式 Linux系统的单用户模式有些类似Windows系统的安全模式&#xff0c;只启动最少的程序用于系统修复。在单用户模式中&#xff08;运行级别为1&#xff09;&…

集团数字化转型方案(十八)

为了实现集团的数字化转型&#xff0c;我们将通过引入人工智能、大数据分析、云计算和物联网等先进技术&#xff0c;全面升级现有业务系统与流程&#xff0c;优化企业资源规划&#xff08;ERP&#xff09;&#xff0c;提升业务自动化水平和数据驱动决策能力&#xff1b;建设集成…

一个可以免费上传制作电子版招生简章的网站

当今社会&#xff0c;网络的普及使得越来越多的学校和企业选择通过电子版招生简章来扩大影响力&#xff0c;降低宣传成本。有没有一个免费、便捷且功能强大的平台&#xff0c;能让您轻松上传制作招生简章呢&#xff1f;答案是肯定的&#xff01; 1.要制作电子杂志,首先需要选择…

Mybatis Plus乐观锁实现

1 引言 乐观锁的主要作用在于提高系统的并发性能和减少锁冲突&#xff0c;同时保证数据的一致性。‌其原理简单来说就是&#xff0c;在修改数据的时候&#xff0c;判断数据是否被其他人改过&#xff0c;如果已被其他人改过&#xff0c;则修改失败。 2 代码 在SpringBoot 3.x…

掏耳勺买什么样的好?五大超值不踩雷可视挖耳勺推荐种草!

可视挖耳勺是热度特别高的个人清洁工具&#xff0c;不仅能够更加清晰地观察自己耳内的状况&#xff0c;从而更加安全、有效地清洁耳朵&#xff0c;可以发挥多种多样的作用&#xff0c;但是市面上也隐藏了很多劣质不专业产品&#xff0c;使用这类产品容易出现成像效果模糊、机身…

AI文案新纪元:用ChatGPT构建你的文案创作系统

文章目录 一、ChatGPT在文案创作中的独特优势1. 高效生成&#xff0c;快速响应市场2. 个性化定制&#xff0c;精准触达受众3. 创新表达&#xff0c;提升内容吸引力 二、构建文案创作系统的详细步骤1. 需求分析与系统规划2. 接入ChatGPT API与集成开发3. 设计用户友好的交互界面…