编程技术是改变世界的力量。
本站
当前位置:网站首页 > 后端语言 > 正文

《鹏哥C语言第一课》第95.1讲 typedef关键字和应用(1)#c语言

gowuye 2024-04-25 04:42 8 浏览 0 评论

这个视频再给大家介绍一个关键字叫typedef。这个关键字是用来干什么的?它其实是用来类型重命名的,是给类型做重命名的,希望大家能够理解。它可以将那些复杂的类型简单化。

比如现在想定义一个无符号的整型变量,可能怎么写?无符号叫unsigned int,无符号整型,这个地方定义的变量叫num。这个时候想给它赋一个100值进去可不可以?这样写没有任何问题。但是每次写unsigned int其实可能变得比较麻烦,想简化一下怎么办?

这个时候就有一种方法叫typedef,typedef从类型上就能够看,从名字上就可以看出来type类型def,typedef类型定义对不对?想把unsigned int这个类型重新起个名叫新的名字叫uint可不可以?当然可以了,就把这个类型重新起个名字叫uint。

这样以后用uint创建变量,比如num2,这个地方放一个200,注意这个地方的num和num2一模一样,它的类型是一模一样的,叫unsigned int,写uint也是unsigned int。同志们理解了吗?

当用typedef对它进行重命名之后,产生的这个类型是一个新的类型,这个类型的本质是unsigned int,明白意思了吗?它是一种类型,也是一种类型,但这两个类型的本质是一模一样的。但用第二种方式的时候,只要对复杂的类型重命名写成一个简化之后,用简化之后的类型是不是更加方便一些?懂了吧?这就是typedef要达到的效果,你们理解了吗?

除了对于这种unsigned int类型的指针类型能不能重命名也可以的。比如同学们来看,这段代码暂时屏蔽掉,再来看,原来想定义个整型指针变量的时候会怎么做?这个地方大家注意,叫return,原来想定义个整型指针变量的时候int*p就可以了,这个时候的P的类型叫int*,这就是一种指针类型。

现在我也可以怎么做?能不能对指针类型进行重命名?可以typedef,对int*重命名叫ptr_t,可不可以?可以,把int重命名叫ptr_t,这个时候用ptr_t创建的p2,注意也是一个指针变量,这里面就看不到那个的,发现没有?因为把它整体命名叫ptr_t,用ptr_t创建的p2就是一种指针变量。

能听懂我的意思吗?希望大家能够理解,对于指针类型也能重命名,而对于指针类型重命名的好处是什么?typedet重命名的好处是什么?好处是这样子的,把这个代码屏蔽掉,假设要连续创建两个整型指针的变量,怎么写?写int*pl,p2;好多人可能喜欢这样去写,注意当这样去写的时候p1和p2的类型分别是什么?当这样去写的时候实际上的p1是指针变量。

大家注意p1,当这样写的时候p1是整型指针,但是p2是什么?是整型变量,希望大家能够理解这句代码,它跟你这样写是一个意思的,int*pl,p2;上面这句代码其实就相当于写成这样子的,这一颗是给p1用了,说明p1是指针变量,p2说我也想是个指针变量,抱歉。因为这颗*已给p1用的时候,p2的类型只能是int*了,所以p2是整型变量,它不能定义出两个指针变量的。

所以如果你想连续定义两个指针变量的时候,你该怎么写?该怎么写?这种方式肯定是不行了,该怎么写?在这再加一颗*,这样定义出的p2才是个指针变量的。

我这样讲大家能够理解吗?如果你要连续定义两个指针变量,应该这样去写。当然这一颗*中间要不要加空格无所谓的,加不加空格都无所谓。注意连续定义两个指针变量是这样子定义的。

如果你觉得这种方式也太挫了,很容易出错,对不对?这个时候你想说,我能不能把这个int*定义成ptr_t?可以的,这个ptr_t就代表int*。所以以后我这创建个p3,04的时候,注意,这我想告诉你的是什么?p3和p4都是指针变量。

听懂意思吗?这个p2和p4的类型是一模一样的,都是通过ptr_t来定义的。而ptr_t是什么?ptr_t就是int*,所以p3p4都是指针变量。但是如果你没有重命名,直接这样去写,p2是整型变量,p1是这个地方的p1是整型指针。注意这就是它们的差异,所以你对指针重命名,它也是有一定的好处的。

这个点大家理解了吧?同学们,如果大家能够理解我刚刚讲的这个点,那对于typedef,大家可能就已经增加了一些比较常见或者重要的这种理解。当我们讲到这之后,有的人说老师那typedef还有没有什么值得注意的?注意这再给大家讲一个说,对于数组指针和函数指针来说,如果要对它进行typedef,稍微有一点点的区别。

比方说来看一下之前给大家定义过数组指针,写过数组指针,数组指针对吧?这个地方再给大家重新写一下。比方说这有个数组arr,方括号这个地方给上个5,这是个数组。当取地址数组名的时候,拿到数组的地址,想把它放到p里边去,p必须是个指针,这个指针要有能力指向数组的。

方括号这地方给上一个指向数组,方括号这地方写着5,说明指向那个数组是5个元素,指向那个数组是arr,它的每个元素类型是int,所以前面写个int就可以了。注意这个地方,大家注意,这写的这个P是数组指针变量,也要知道对于这个p来说,去掉名字剩下的就是它的类型。当把这个名字去掉的时候,注意这就是数组指针类型。

我写出的这个东西就是一个数组指针类型。同学们听懂我的意思,数组指针类型就是一个数组指针类型。

相关推荐

Nginx 响应提速10倍,你需要知道的缓存性能优化——FastCGI调优
Nginx 响应提速10倍,你需要知道的缓存性能优化——FastCGI调优

Nginx缓存优化是帮助大家提升网站性能的重要操作之一,proxy_cache主要用于反向代理时,对后端内容源服务器进行缓存;fastcgi_cache主要用于...

2024-05-20 14:44 gowuye

王者荣耀天魔缭乱和逐梦之音返场活动地址 3月22日开启返场活动
王者荣耀天魔缭乱和逐梦之音返场活动地址 3月22日开启返场活动

王者荣耀官方终于确定了天魔缭乱和逐梦之音的返场活动,这让不少小伙伴乐开了花,返场活动将会在3月22日开启,下面就带来王者荣耀天魔缭乱和逐梦之音返场活动地址!王者...

2024-05-20 14:44 gowuye

常见的嵌入式web服务器有哪些?

嵌入式WEB服务器常见的有:Lighttpd,Shttpd,Thttpd,Boa,Mini_httpd,Appweb,Goahead。Lighttpd地址:http://www.light...

简述几款常见的嵌入式web服务器
简述几款常见的嵌入式web服务器

嵌入式web服务器,是web服务器当中的一种,是基于嵌入式系统而实现的web服务器。指的是在嵌入式系统(通俗点就是单片机系统)上实现的一个web服务器,可以通过...

2024-05-20 14:44 gowuye

教你如何利用fastcgi_cache缓存加速WordPress

在使用nginx缓存之前,必须在nginx里面加载专门的模块,这个模块叫做ngx_cache_purge。添加ngx_cache_purge模块下载ngx_cache_purge模块ngx_cache...

扫描WordPress漏洞

检测已知漏洞WPScan是一款广泛使用的WordPress安全扫描工具,它的一项重要功能是检测已知漏洞。在这篇文章中,我们将深入探讨WPScan如何检测已知漏洞,并结合实际示例,帮助读者更好地理解和应...

消灭 Bug!推荐几个给力的开源 Bug 跟踪工具
消灭 Bug!推荐几个给力的开源 Bug 跟踪工具

在这个充满bug的世界里,最遥远的距离不是生与死,而是你亲手制造的bug就在你眼前,你却怎么都找不到它。因此本文准备了7款优秀的开源bug跟踪系...

2024-05-20 14:43 gowuye

生物信息分析入门全攻略

生物信息学是生命科学研究的重大前沿领域,未来将占据生命科学研究的半壁江山。已经有越来越多的小伙伴投入到生物信息的学习中,但是入门难、深入慢、摸不到方向等都成为持续学习的拦路虎。本文根据生物信息技术大牛...

elkb实践经验,再赠送一套复杂的配置文件
elkb实践经验,再赠送一套复杂的配置文件

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。宝剑锋从磨砺出,梅花香自苦寒来。诗人白居易,三月下江南,看到沿路开放的桃花,心潮澎湃...

2024-05-20 14:43 gowuye

超详细从0到1 搭建ELK监控
超详细从0到1 搭建ELK监控

监控分类?Metrics用于记录可聚合的数据。例如,1、队列的当前深度可被定义为一个度量值,在元素入队或出队时被更新;HTTP请求个数可被定义为一个计数器,...

2024-05-20 14:42 gowuye

嵌入式开发 之Web配置页面开发
嵌入式开发 之Web配置页面开发

1.PHP是最好的语言??开发动态页面首选的语言是PHP,村村不能在这里忽悠人,如果你的硬件性能允许切略懂PHP,看到这里就可以退出了。本文面向的受众是Linu...

2024-05-20 14:42 gowuye

Python开发一个网站目录扫描工具用来检测网站是否有漏洞?
Python开发一个网站目录扫描工具用来检测网站是否有漏洞?

开发一个网站目录扫描工具是用来检测网站是否有非法目录请求的一个常见需求之一,我们要通过这个扫描工具来找到通过某个域名可以访问到的网站路径,可能对于有些系统来讲,...

2024-05-20 14:42 gowuye

创建一个类似Youtube的Id——使用PHP/Python/JS/Java/SQL

id通常都是用数字,不巧的是只有10个数字来使用,所以如果你有很多的记录,id往往变得非常冗长。当然对于计算机来说无所谓,但我们更希望id尽可能短。所以我们如何能使id变短?我们可以利用字母让它们附加...

快速云:有助于移动应用安全开发的五条妙计
快速云:有助于移动应用安全开发的五条妙计

许多企业不断地向其开发团队提供培训。但是某些漏洞,如早在十多年前就发现的SQL注入,如今仍广泛存在于各种应用中。因而,安全培训永不过时。在开发移动应用时,开发者...

2024-05-20 14:41 gowuye

洛杉矶国际电影节最佳动画短片奖影片《G’DAY》正式全网上映
洛杉矶国际电影节最佳动画短片奖影片《G’DAY》正式全网上映

7月2日,由M&CSaatchi创作,由深受好评的澳大利亚导演迈克尔·格雷西执导的动画短片《G’day》,正式在全网上映。该影片因其出色的创意赢得了洛...

2024-05-20 14:41 gowuye

取消回复欢迎 发表评论: