C++ 全栈知识体系C++ 全栈知识体系
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
  • 基础

    • C++ 基础 - 学习路线
    • C++ 基础 - 知识点
    • C++ 基础 - 面向对象
    • C++ 基础 - 语法糖
    • C++ 基础 - 关键字
    • C++ 基础 - 常用宏定义
    • C++ 基础 - 宏函数、内联函数、普通函数
  • 函数

    • C++ 函数 - 闭包
    • C++ 函数 - Linux系统调用Hook
    • C++ 函数 - getopt函数分析以及命令行解析
    • C++ 函数 - 函数指针及其应用
    • C++ 函数 - 作用域运算符::的使用
    • C++ 函数 - 智能指针shared_ptr的使用
    • C++ 函数 - struct结构体学习
    • C++ 函数 - typedef 语句的使用
    • C++ 函数 - va_list函数学习
  • 知识点

    • C++ 知识点 - 写时拷贝技术(copy-on-write)
    • C++ 知识点 - 前向声明(forward declaration)
    • C++ 知识点 - 头文件.h 和 源文件.cpp 以及多重定义(multiple definition)
    • C++ 知识点 - 为什么C语言不支持函数重载,C++又是如何支持的
    • C++ 知识点 - return 局部变量
    • C++ 知识点 - linux下c/cplusplus头文件和动态库的搜索
    • C++ 知识点 - 模板特化与偏特化
  • IO框架

    • C++ IO框架 - I/O 复用
    • C++ IO框架 - select 函数
    • C++ IO框架 - poll 函数
    • C++ IO框架 - epoll 函数
    • C++ IO框架 - Reactor 和 Proactor
  • 新版本特性

    • C++ 新版本特性 - C++11
    • C++ 新版本特性 - C++14
    • C++ 新版本特性 - C++17
    • C++ 新版本特性 - C++20

C++函数 - typedef 语句的使用

  • 使用typedef定义数组类型
    • 一维数组类型的定义格式
    • 二维数组类型的定义格式
    • 对已有类型定义别名

使用typedef定义数组类型

一维数组类型的定义格式

typedef <元素类型关键字><数组类型名>[<常量表达式>]; 例如:

  1. typedef int intArr[10];
  2. typedef std::string stringArr[20];
  3. typedef int array[N];

二维数组类型的定义格式

typedef <元素类型关键字><数组类型名>[<常量表达式1>][<常量表达式2>]; 例如:

  1. typedef int matrix[5][5];
  2. typedef char nameTable[10][NN];
  3. typedef double DD[M+1][N+1];

对已有类型定义别名

利用typedef语句不仅能够定义数组类型,而且能够对已有类型定义出另一个类型名,以此作为原类型的一个别名。如:

  1. typedef int inData;
  2. typedef char chData;
  3. typedef char* chPointer;

例子:

详情
#include <iostream>
#include <memory>

using namespace std;

//一维数组
typedef int intArr[10];
typedef std::string stringArr[20];

//二维数组
typedef int matrix[5][5];
typedef char nameTable[3][3];

//对已有类型定义别名
typedef int inData;
typedef char chData;


int main()
{
    intArr mIntArr = {1,2,3,4,5};
	stringArr mStrArr = { "hello","world"};
	
    for(int i=0 ;i< sizeof(mIntArr)/sizeof(int);i++)
	{
		if (mStrArr[i]=="") break;
		cout<<i <<"th mIntArr is "<<mIntArr[i]<<endl;
	}
	
	for(int i=0 ;i< sizeof(mStrArr)/sizeof(std::string);i++)
	{
		if (mStrArr[i]=="") break;
		cout<<i <<"th mStrArr is "<<mStrArr[i]<<endl;
	}
	
	cout<<"————————————————————————————————————————"<<endl;
	
	matrix mMat ={{1,2,3,4,5},{6,7,8,9,10},{11,12,13}};
	for(int i=0 ;i<5;i++)
	{
		for(int j=0 ;j<5;j++)
		{
			if (mMat[i][j]==0) break;
			cout<<"mMat["<<i<<"]["<<j<<"]:"<<mMat[i][j]<<endl;
		}
	}
	nameTable mNameTable ={{'a','b','c'},{'d','e','f'},{'g','h'}};
	
	for(int i=0 ;i<3;i++)
	{
		for(int j=0 ;j<3;j++)
		{
			if (mNameTable[i][j]==' ') break;
			cout<<"mNameTable["<<i<<"]["<<j<<"]:"<<mNameTable[i][j]<<endl;
		}
	}
	
	cout<<"————————————————————————————————————————"<<endl;
	inData m_int =100;
	chData m_char ='Z';
	
	cout<<"m_int is "<<m_int<<endl;
	cout<<"m_char is "<<m_char<<endl;
	
    return 0;
}

执行结果:

[root@localhost typedef]# ./main
0th mIntArr is 1
1th mIntArr is 2
0th mStrArr is hello
1th mStrArr is world
————————————————————————————————————————
mMat[0][0]:1
mMat[0][1]:2
mMat[0][2]:3
mMat[0][3]:4
mMat[0][4]:5
mMat[1][0]:6
mMat[1][1]:7
mMat[1][2]:8
mMat[1][3]:9
mMat[1][4]:10
mMat[2][0]:11
mMat[2][1]:12
mMat[2][2]:13
mNameTable[0][0]:a
mNameTable[0][1]:b
mNameTable[0][2]:c
mNameTable[1][0]:d
mNameTable[1][1]:e
mNameTable[1][2]:f
mNameTable[2][0]:g
mNameTable[2][1]:h
mNameTable[2][2]:
————————————————————————————————————————
m_int is 100
m_char is Z

Last Updated:
Contributors: klc407073648
Prev
C++ 函数 - struct结构体学习
Next
C++ 函数 - va_list函数学习