【C/C++】typedef用法

2024-08-27 23:04
文章标签 c++ 用法 typedef

本文主要是介绍【C/C++】typedef用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 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;

这篇关于【C/C++】typedef用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113030

相关文章

golang panic 函数用法示例详解

《golangpanic函数用法示例详解》在Go语言中,panic用于触发不可恢复的错误,终止函数执行并逐层向上触发defer,最终若未被recover捕获,程序会崩溃,recover用于在def... 目录1. panic 的作用2. 基本用法3. recover 的使用规则4. 错误处理建议5. 常见错

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

C++一个数组赋值给另一个数组方式

《C++一个数组赋值给另一个数组方式》文章介绍了三种在C++中将一个数组赋值给另一个数组的方法:使用循环逐个元素赋值、使用标准库函数std::copy或std::memcpy以及使用标准库容器,每种方... 目录C++一个数组赋值给另一个数组循环遍历赋值使用标准库中的函数 std::copy 或 std::

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详