首页 > 其他分享 >C语言 typedef的用法示例讲解

C语言 typedef的用法示例讲解

时间:2023-07-20 22:02:47浏览次数:42  
标签:typedef 示例 int void C语言 data PTR 指针

typedef是在C和C++编程语言中的一个关键字,作用是为现有的数据类型(int、float、char……)创建一个新的名字,目的是为了使代码方便阅读和理解。

C语言 typedef的用法示例讲解_指针变量

一、什么是typedef

typedef是在C和C++编程语言中的一个关键字。作用是为现有的数据类型(int、float、char……)创建一个新的名字,目的是为了使代码方便阅读和理解。

二、typedef用法

1、对于数据类型使用例如:

typedef  int   NEW_INT;

以上就是给int起了一个新的名字NEW_INT,注意要加分号。当要定义int类型数据时就可以:

NEW_INT num;

此时NEW_INT num 等同于 int num。

2、对于指针的使用

typedef  int   *PTRINT;

以上就是给int *起了一个新的名字NEW_INT。可定义int类型指针变量如:

PTRINT x;

此时PTRINT x等同于int *x。

例:

C语言 typedef的用法示例讲解_指针变量_02

3、对于结构体的使用

在声明结构体时可为结构体和结构体指针起别名,如:

typedef struct NUM
{
     int a;
     int b;
}DATA,*PTRDATA;

此时DATA等同于struct NUM,*PTRDATA等同于struct NUM *。

定义结构体变量及指针可简化为:

DATA data;           //定义结构体变量
   PTRDATA pdata;   //定义结构体指针

举个例子:

#include <stdio.h>
typedef struct NUM
{
     int a;
     int b;
}DATA,*PTRDATA;
int main()
{
       DATA data;           //定义结构体变量
       PTRDATA pdata;   //定义结构体指针
       pdata=&data;      //结构体指针指向结构体变量      
       data.a=100;
       data.b=500;
       printf("a=%d\nb=%d\n",data.a,data.b);
       printf("a=%d\nb=%d\n",pdata->a,pdata->b);
       return 0;
}

运行结果:

C语言 typedef的用法示例讲解_指针变量_03

三、进阶typedef

1、数组指针

int (*ptr)[3];

使用Typedef:

typedef int (*PTR_TO_ARRAY)[3];

例:

#include <stdio.h>
typedef int (*PTR_TO_ARRAY)[3];
int main()
{
       Int I;
       Int temp[3]={1,2,3};
       PTR_TO_ARRAY ptr_to_array;
       ptr_to_array = &temp;
       for(i+0;i<3;i++)
        {
              printf("%d\n",(*ptr_to_array)[i]);
        }
       return 0;
}

2、指针函数

int (*fun)(void);

使用Typedef:

typedef int (*PTR_TO_FUN)(void);

3、Int *(*array[3])(int);

int *(*array[3])(int);

使用Typedef:

typedef int *(*PTR_TO_FUN)(int);
PTR_TO_FUN array[3];

4、Void (*funA(int,void(*funB)(int)))(int);

void (*funA(int,void(*funB)(int)))(int);
void (*funA(参数))(int);

使用Typedef:

typedef void (*PTR_TO_FUN)(void);
PTR_TO_FUN funA(int, PTR_TO_FUN);

四、Typedef与define

Typedef是起别名,define是替换。

例如:

typedef int *PTR;
PTR a,b;

此时a,b都是指针变量。

#define PTR int*
PTR a,b;

此时等同于

int *a,b;

只有a为指针变量,而b为整型变量。

C语言 typedef的用法示例讲解_结构体指针_04

标签:typedef,示例,int,void,C语言,data,PTR,指针
From: https://blog.51cto.com/u_15641375/6792282

相关文章

  • c语言学习8
    指针复习:什么是指针:数据类型定义指针变量整型内存编号访问对应内存为什么使用指针:1、函数之间共享变量输入、输出2、提高传参效率指针变量4\8字节3、使用堆内存时如何使用指针:定义:类型*变量名_p;变量名以p结尾与普通变量以示区分一个只能定义一个指针变量初始化......
  • c语言学习详解
    C语言一.C语言概述C语言是一种用于和计算机交流的高级语言,它既具有高级语言的特点,又具有汇编语言的特点非常接近自然语言程序的执行效率非常高C语言是所有编程语言中的经典,很多高级语言都是从C语言中衍生出来的,例如:C++、C#、Object-C、Java、Go等等C语言是所有编程语言......
  • Factor语言编程示例
    目录语言简介示例语言简介https://rosettacode.org/wiki/Category:FactorFactor是一种基于堆栈的、串联的通用编程语言,注重实用性。Factor最初由SlavaPestov开发,于2003年作为一种为游戏编写的脚本语言诞生。该实现最初是用Java编写的解释器,但后来获得了优化编译器,并使......
  • javascript中map reduce filter的示例代码
    以下是JavaScript中map、reduce和filter的示例代码:Map(映射)示例代码:Map函数将数组中的每个元素映射为一个新的值,返回一个新的数组。constnumbers=[1,2,3,4,5];//将数组中的每个元素平方constsquaredNumbers=numbers.map(num=>num*num);console.log(square......
  • javascript中json 对象 数组之间相互转化的示例
    在JavaScript中,你可以使用JSON.stringify()将JSON对象转换为JSON字符串,使用JSON.parse()将JSON字符串转换为JSON对象。而要将JSON对象转换为数组,可以使用Object.values()方法,而要将数组转换为JSON对象,可以使用Array.reduce()方法。下面是这些转换的示例代码:将JSON对象转换为JSON......
  • c语言卷积的编程
    1、用c语言做这个离散卷积2、ccs5编写c语言卷积算法一般多少个周期?3、快速卷积在什么情况下效率最高呢4、C语言怎么实现小波变换5、C语言用子函数实现卷积6、怎样用c语言编写卷积计算程序用c语言做这个离散卷积暴力N^2可以直接乘,直接双重循环即可,要快的话可以用NlogN......
  • C语言scanf指定字符串分隔符
    1.示例代码#include<stdio.h>intmain(intargc,char**argv){charstr[3][20];puts("inputastringsepratorwith\",\"\r\n");scanf("%[^,],%[^,],%s",str[0],str[1],str[2]);puts(str[0])......
  • 初学C语言day04--数组
    一、数组什么是数组:变量的组合,是一种批量定义相同类型变量的方式    定义:类型名数组名[数量];intarr[5];注意:数组的长度一旦确定,无法改变使用:数组名[下标];下标:从0开始,范围:0~数量-1    遍历:把数组的数据从头到尾显示或访问一般与for循环配合,把循环变量i当做......
  • 多线程:C语言 - 简易线程池的原理和实现
    目录线程循环处理任务,线程不退出1.存储任务--循环读取任务2.函数回调--函数退出,线程不退出本质是事件驱动,是生产者消费者模型1.工作线程--线程池的池化单元,任务的消费者2.线程池持有者--提供多任务,任务的生产者存储任务的数据结构1.任务(task_t)2.任务队列/阻塞队列(task_q......
  • 初识C语言——3
    循环1、while——while(表达式)     循环语句;2、for(表达式1;表达式2;表达式3)      循环语句;for循环语句中三个表达式都可以省略——即判断省略处,恒为真。for(i=2;i=0;i++)//——表达式2,将0赋值给i;0为假,则不满足表达式2;不进入循环。3、do   循环语句;while(......