typedef 和 # define 用法区别

这篇具有很好参考价值的文章主要介绍了typedef 和 # define 用法区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

博主在牛客网上看到了一道有关typedef和# define题目。发现有很多初学的小伙伴对两者的用法不是特别清楚,所以博主在这总结以下相关用法和区别。
话不多说,先来看看原题吧!(答案c)
typedef 和 # define 用法区别

1. 原理不同

#define是C语言中定义的语法,是预处理指令,在预处理时进行简单而机械的替换,不作正确性检查,只有在编译已被展开的源程序时才会发现可能的错误并报错。

例如:
#define PI 3.1415926
程序中的:area=PI *r *r 会替换为3.1415926 *r *r
如果你把#define语句中的数字9 写成字母g 预处理也照样带入。

typedef是关键字,在编译时处理,有类型检查功能。它在自己的作用域内给一个已经存在的类型一个别名,但不能在一个函数定义里面使用typedef。用typedef定义数组、指针、结构等类型会带来很大的方便,不仅使程序书写简单,也使意义明确,增强可读性。

1.1 typedef int * int_ptr;与#define int_ptr int * 详细讲解

在开头我们看到的问题中typedef int * int_ptr;与#define int_ptr int *
作用都是用int_ptr代表 int * ,但是二者不同,正如前面所说 ,#define在预处理 时进行简单的替换,而typedef不是简单替换 ,而是采用如同定义变量的方法那样来声明一种类型。也就是说;

#define int_ptr int *
int_ptr a, b; //相当于int * a, b; 只是简单的宏替换

typedef int* int_ptr;
int_ptr a, b; //a, b 都为指向int的指针,typedef为int* 引入了一个新的助记符

这也说明了为什么下面观点成立文章来源地址https://www.toymoban.com/news/detail-479055.html

 typedef int * pint ;
#define PINT int *

那么:
const pint p ;//p不可更改,但p指向的内容可更改
const PINT p ;//p可更改,但是p指向的内容不可更改。

pint是一种指针类型 const pint p 就是把指针给锁住了 p不可更改
而const PINT p 是const int * p 锁的是指针p所指的对象。

2. 功能不同

  • typedef用来定义类型的别名,起到类型易于记忆的功能。另一个功能是定义机器无关的类型。如定义一个REAL的浮点类型,在目标机器上它可以获得最高的精度:typedef long double REAL, 在不支持long double的机器上,看起来是这样的,typedef double REAL;在不支持double的机器上,是这样的,typedef float REA
  • #define不只是可以为类型取别名,还可以定义常量、变量、编译开关等。

3. 作用域不同

  • #define没有作用域的限制,只要是之前预定义过的宏,在以后的程序中都可以使用,而typedef有自己的作用域。

到了这里,关于typedef 和 # define 用法区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • struct和typedef struct的区别

    在了解struct和typedef struct之前,我们先学习下typedef的定义和用法。 typedef为C语言的,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 C语言里typedef的解释是用来声明新的类型名来代替已有的类姓

    2024年02月10日
    浏览(42)
  • C语言之#define用法入门详解

    在C语言中,常量是使用频率很高的一个量。常量是指在程序运行过程中,其值不能被改变的量。常量常使用#define来定义。 使用#define定义的常量也称为符号常量,可以提高程序的运行效率。 其常见的用法包括两种,分别是: 第一种语法就是定义符号常量, 例如: 此后直到

    2024年02月10日
    浏览(39)
  • define, parameter, localparam, specparam, defpara用法简析

    在Verilog中,parameter既不属于变量范畴也不属于线网范畴,经常用来定义一个标志符代表一个 常量 ,当一个模块被另一个模块引用例化时, 高层模块 可以对 低层模 块的参数值进行改写。这样就允许在编译时将不同的参数传递给多个相同名字的模块,而不用单独为只有参数不

    2024年02月16日
    浏览(36)
  • 大模型有什么用,从技术上看

    一、 大模型有什么用 目前为止,大模型主要是以NLP为主,因为NLP抛弃了RNN序列依赖的问题,采用了Attention is All you need的Transformer结构,使得NLP能够演变出更多大模型。图像领域也不甘示弱,CNN大模型也开始陆续涌现。 模型碎片化,大模型提供预训练方案。目前AI面对行业、

    2024年02月08日
    浏览(34)
  • 整体上看,现代化的AI+医疗需要哪些突破?

    作者:禅与计算机程序设计艺术 及背景介绍 AI(Artificial Intelligence)在医疗领域占据着越来越重要的地位。近年来,随着医疗数据量的增加、设备的普及、算法模型的创新等诸多因素的影响,以人工智能技术驱动的医疗诊断技术也呈现出蓬勃发展的态势。但仅仅依靠人工智能

    2024年02月07日
    浏览(40)
  • 手机屏幕不够大,抖音可以投屏到电视上看吗?没问题

    据QuestMobile统计,抖音2023年5月月活用户规模达到7亿多,月人均使用时长达到36.6小时。粗糙计算,每天都在刷抖音。虽然抖音现在除了手机版,也推出了电脑网页版,但是对于刷抖音视频的重度用户来说,盯着手机屏幕或电脑屏幕还是会加重眼疲劳或颈椎疲劳,能不能再轻松

    2024年02月19日
    浏览(46)
  • 【C】typedef 关键字 typedef int (*Operation)(int, int);

    typedef 是C语言中的一个,它的主要作用是 创建类型别名 。是 type definition(类型定义)的缩写。目的是更清晰地表示数据类型,提高代码的可读性和可维护性。 1)基本语法 typedef 的基本语法如下: 这里 existing_type 是已存在的数据类型,而 new_type 则是你为这个已存在类

    2024年01月23日
    浏览(37)
  • #Ts篇:符号`?.` 、`??` 、 `!` 、 `?: `的用法和区别

    ?. 定义 可选属性操作符 例如:obj?.prop。 如果 obj = null || undefined ==== undefined, 在上面的示例中, person1.age 和 person2.age 都可能为 undefined, 因为 age 属性是可选的。 而在访问 job.title 属性时,我们使用了可选属性访问操作符 ?. , 如果 person1.job 或 person2.job 为 null 或 undefined,

    2024年02月08日
    浏览(100)
  • 简单记录下“<<”、“>>”和“>>>”的用法和区别

    这里给出两种记忆方式,自己看哪种适合自己 方式一 在带符号的移位中,无论正数还是负数,移位后符号不变,数值变化: 正数:左移右移都补0; 负数: 原码 左移右移都补0,             反码 左移右移都补1,             补码 左移补0,右移补1; 方式二 \\\"\\\"是指:向左

    2024年02月06日
    浏览(38)
  • Comparable和Comparator的用法和区别

    文章目录 前言 一 .Comparable 1.Comparable是什么? 2.comparable有用吗? 有用的话它有什么用? 没学compar之前的解决办法 :  2.在学习了comparable之后 二.comparator 1.comparator是什么? 2.comparator怎么用? 3.两者的差异 总结 在这里给大家整理了一下comparable和comparator的用法和区别,这些在以后代码

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包