在C中定义一个结构体要用typedef,如:

typedef struct Student {
int a;
}Stu;

于是在声明变量的时候就能够:Stu stu1;(假设没有typedef就必须用struct Student stu1;来声明)。这里的Stu实际上就是struct Student的别名:Stu == struct Student.

当然事实上这里能够不写Student,例如以下:

typedef struct {
int a;
}Stu;

这里也就必须使用Stu stu1来声明对象了。

请看以下的代码:

typedef struct tagMyStruct{
int iNum;
long lLength;
} MyStruct;

上面的tagMyStruct是标识符,MyStruct是变量类型。上述代码事实上完毕了两个操作:

(1)定义一个结构体:

struct tagMyStruct{
int iNum;
long lLength;
};

tagMyStruct称为tag,即标签。实际上是一个暂时名字。不论是否有typedef structkeyword和tagMyStruct一起。都构成了这个结构体。此时我们能够使用struct tagMyStruct varName来定义变量。

可是注意。使用tagMyStruct varName来定义变量是不正确的。

由于struct和tagMyStruct合在一起才干表示一个结构体类型。

(2)typedef为这个新的结构起了一个名字,叫MyStruct.

typedef struct tagMyStruct MyStruct. 因此MyStruct实际上相当于struct tagMyStruct,我们能够使用MyStruct varName来定义变量。

对于相同的代码。在C和C++中也有不同的理解。例如以下:

typedef struct tagMyStruct{
int iNum;
long lLength;
} MyStruct;

在C中。这个结构体声明结构体变量的方式有两种:

1)struct tagMyStruct 变量名。

2)MyStruct 变量名。

在C++中:

1)struct tagMyStruct 变量名;

2)MyStruct 变量名。

3)tagMyStruct 变量名;
本文參考:http://www.cnblogs.com/qyaizs/articles/2039101.html

C语言typedef struct具体解释的更多相关文章

  1. C语言 - typedef struct 与struct

    c语言中可以选择的数据类型太少了. Java中有一些高级的数据结构. 结构中能够存放基本的数据类型以及其他的结构. 结构定义,一般放在程序的开头部分. 一般放在include之后. #include ...

  2. C语言 typedef struct _STUDENT {}STUDENT,*PSTUDENT;

    #include <stdio.h> #include <stdlib.h> #include <string.h> //给stuct _STUDENT 起一个别名 ...

  3. c语言typedef的用法-解惑阿!很多天书般的东西解释的不错(转)

    转自(http://www.cnblogs.com/wchhuangya/archive/2009/12/25/1632160.html) 一.基本概念剖析 int* (*a[5])(int, cha ...

  4. [C语言]关于struct和typedef struct

    在C中定义一个结构体类型要用typedef: *************************************************************************** t ...

  5. struct和typedef struct在c语言中的用法

    在c语言中,定义一个结构体要用typedef ,例如下面的示例代码,Stack sq:中的Stack就是struct Stack的别名. 如果没有用到typedef,例如定义 struct test1 ...

  6. C语言typedef的用法(转)

    http://www.cnblogs.com/afarmer/archive/2011/05/05/2038201.html 一.基本概念剖析 int* (*a[5])(int, char*);    ...

  7. C/C++语法知识:typedef struct 用法详解

    第一篇:typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定 ...

  8. struct 与 typedef struct

    1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等). 在编程中使用typede ...

  9. struct和typedef struct在c++中的用法

    #include<iostream> using namespace std; struct test{ int a; }test; //定义了结构体类型test,声明变量时候直接test ...

随机推荐

  1. Unknown column 't_user.id' in 'where clause'(通过字段名删除不了数据)

    创建员工信息表t_user CREATE TABLE t_user( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20) , passwor ...

  2. POJ-3436 ACM Computer Factory 最大流 为何拆点

    题目链接:https://cn.vjudge.net/problem/POJ-3436 题意 懒得翻,找了个题意. 流水线上有N台机器装电脑,电脑有P个部件,每台机器有三个参数,产量,输入规格,输出规 ...

  3. centos7 bond0 双网卡配置

    [root@openldap ~]# ifconfig bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500 ...

  4. php7 memcache和memcached.so扩展

    php7安装memcache和memcached扩展 https://github.com/websupport-sk/pecl-memcache https://github.com/php-mem ...

  5. hook中ref使用

    hook使用ref 父组件: 引入                  useRef 声明ref的名字     const dateRef = useRef() 复值给组件         ref={d ...

  6. POJ 2175 Evacuation Plan

    Evacuation Plan Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Origina ...

  7. readb(), readw(), readl(),writeb(), writew(), writel() 宏函数

    参见: http://blog.csdn.net/hustyangju/article/details/20448339

  8. java 项目 导入成功后jsp页面报错处理方法

    本人新导入一个maven项目可是jsp页面一直报错,我先按照网上的经验操作如下步骤: 在pom.xml配置文件中添加上javax.servlet的相关依赖: <dependency>  & ...

  9. hadoop-01-ssh无密登录配置

    1,分配master机器2台,slave机器5台: 2,在全部机器上面配置/etc/hosts设置 3,全部机器上面进行ntp设置:TODO 4,在master机器上面: 不要用root登录 1) s ...

  10. 4、java变量、函数、基本类型的值传递、分支、循环、流程控制

    一.全局变量(global).局部变量(local).动态变量(dynamic).静态变量(static) 在类中的变量为全局变量,在方法函数中为局部变量,局部变量必须有人为赋的初值,全局变量的初值是 ...