C语言中typedef关键字的作用,C语言第四讲,typedef 关键字,以及作用域

C语言第四讲,typedef 关键字,以及作用域

一丶typedef关键字

在C语言中,有typedef 关键字,这个关键字的作用就是允许你为类型定义一个新的名字,也就是 起个别的名字

例如:

typedef unsigned int DWORD

那么以后,我们定义unsigned int 类型的变量的时候,这不用敲写 unsigned int 了.直接DWORD即可.

例如:

DWORD name = 0;

一般常常用在 结构体的定义,和函数指针上.

例如:

typedef struct MyStruct

{

int a;

int b;

}MyIntStruct;

那么新的类型就是  MyIntStruct ,而这个类型就免去了你每次定义的时候加关键字了.

例如:

int main

{

// struct MyStruct IS;

// 没定义前,要使用上面

MyIntStruct IS;

IS.a = 10;

return 0;

}

二丶作用域

在C语言中,编写的代码有作用域的限制.

作用域是什么?

简而言之,当我们定义变量的时候,这个变量的访问.要在一定区域内才能进行访问.

比如你在A函数定义变量a,在B函数定义变量b,那么B函数是不能使用a变量的.

例如:

#include

void printfB()

{

int b = ;

printf("%d\r\n",b);

}

void printfA()

{

int a = ;

printf("%d\r\n",a);

}

其中上面是函数作用域,  也就是 {    } 块语句包含的.

代码块作用域:

代码块作用域主要靠 { }来区分.

例如:

int main()

{

int a = 10;

{

int a = 11;

printf("%d",a); //块语句包围

}

printf("%d",a);

return 0;

}

如果这样定义,则a不会重定义.且a = 11,在代码执行到 } 结束后.也不复存在了.

文件作用域:

文件作用域就是代码外面定义的. 也就是说全局变量. 全局作用域,在当前文件的任何一个位置都可以访问的.

例如:

int a = 10; //外面声明即可.

int main()

{

printf("%d",a);

return 0;

}

C语言结构体及typedef关键字定义结构体别名和函数指针的应用

结构体(struct)的初始化 struct autonlist { char *symbol; struct nlist nl[2]; struct autonlist *left, *right; ...

C语言学习及应用笔记之五:C语言typedef关键字及其使用

在C语言中有一个typedef关键字,其用来定义用户自定义类型.当然,并不是真的创造了一种数据类型,而是给已有的或者符合型的以及复杂的数据类型取一个我们自己更容易理解的别名.总之,可以使用typede ...

逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式

逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不 ...

转:C#精髓 第四讲 GridView 72般绝技

说明:准备出一个系列,所谓精髓讲C#语言要点.这个系列没有先后顺序,不过尽量做到精.可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注. C#精髓 第四讲 GridView 72般绝技 作者 ...

PE格式第四讲,数据目录表之导入表,以及IAT表

PE格式第四讲,数据目录表之导入表,以及IAT表 一丶IAT(地址表) 首先我们思考一个问题,程序加载的时候会调用API,比如我们以前写的标准PE 那么他到底是怎么去调用的? 他会Call 下边的Jm ...

C++反汇编第四讲,反汇编中识别继承关系,父类,子类,成员对象

C++反汇编第四讲,反汇编中识别继承关系,父类,子类,成员对象 讲解目录: 1.各类在内存中的表现形式   备注: 主要复习开发知识,和反汇编没有关系,但是是理解反汇编的前提.     2.子类继承父 ...

python学习第四讲,python基础语法之判断语句,循环语句

目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...

C语言第十一讲,预处理命令.

C语言第十一讲,预处理命令. 一丶预处理简介 什么是预处理,预处理就是预先处理. 我们知道,程序会经过编译,连接形成可执行文件 这些在编译之前对源文件进行简单加工的过程,就称为预处理(即预先处理.提前 ...

C语言第十讲,枚举类型简单说明

C语言第十讲,枚举类型简单说明 一丶C语言中的枚举类型(ENUM) 在我们实际工作中,或者编写代码中.我们有的时候会用固定的值.而且不是很多. 这个时候就可以使用枚举了.如果我们使用#define显然 ...

随机推荐

01.SQLServer性能优化之---水平分库扩展

汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 第一次引入文件组的概念:http://www.cnblogs.com/dunitian/ ...

java中对List<Map<String,Object>>中的中文汉字排序

import java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.C ...

开源.NET FTP组件edtFTPnet 用法

edtFTPnet官方网站:http://www.enterprisedt.com/products/edtftpnet/ 目前最新版本为2.2.3,下载后在bin目录中找到edtFTPnet.dll ...

python基础——列表生成式

python基础——列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4 ...

Oracle over函数学习

sql over的作用及用法 RANK ( ) OVER ( [query_partition_clause] order_by_clause ) DENSE_RANK ( ) OVER ( [que ...

jqueryui autocomplete的使用与angular配合的小坑

刚开始在做搜索联想功能时,使用了jquery.autocomplete.js插件,当并不理想,首先插件老旧,也只适合老版的jquery.其次在数组中只能联想到首字母一样的数据,比如[12,23,222 ...

vue--一些预设属性

Babel=> 转换工具,将ES6转换成ES5的转换工具.有些浏览器不支持ES6语法: router=> 路由管理器: vueX=> 一个仓库,存储状态信息: CSS pre-pro ...

[JDBC]ORA-01000: 超出打开游标的最大数(ORA-01000: maximum open cursors exceeded)

问题产生的原因: Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,相当于在数据库中打开了一个cursor.由于oracle对打开的 ...

Java基础语法学习知识

基础概念 标识符1.由字母,数字,下划线,美元符组成2.首字母不能是数字3.不能是关键字和保留字4.能反映其作用 关键字1.有特定含义2.用于特定地方3.用来命名标识符 常量1.程序执行时值不变的量2 ...

Codeforces1106F 【BSGS】【矩阵快速幂】【exgcd】

首先矩阵快速幂可以算出来第k项的指数,然后可以利用原根的性质,用bsgs和exgcd把答案解出来 #include using namespace std; ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值