c语言struct和typedef struct有什么区别?

作者&投稿:虫贴 (若有异议请与网页底部的电邮联系)
~

C语言结构体中struct和typedef struct区别为:声明不同、访问不同、重新定义不同。

一、声明不同

1、struct:struct可以直接使用结构体名字声明结构体。

2、typedef struct:typedef struct的为。修饰结构体,结构体有了别名,通过结构体别名声明结构体。

二、访问不同

1、struct:struct定义的结构体变量,可直接访问结构体成员。

2、typedef struct:typedef struct定义的结构体变量,不可直接访问结构体成员,必须显式的通过结构体变量来访问成员。

三、重新定义不同

1、struct:想重新定义struct结构体的话,必须重写整个结构体。

2、typedef struct:想重新定义typedef struct结构体的话,可以通过别名来继承结构体进行重新定义。



在C语言中,struct用于定义结构体,typedef struct用于给结构体类型取一个新的别名。两者的区别如下:

1. struct用于定义结构体类型,定义完之后需要使用struct关键字来声明该类型的变量。而typedef struct可以直接定义该类型的别名,使得在定义变量时不再需要使用struct关键字。

例如:

struct Person {

char *name;

int age;

};

typedef struct {

char *name;

int age;

} Person;

第一个例子定义了一个结构体类型Person,使用该类型需要在变量前加上struct关键字,例如:

struct Person p;

第二个例子使用typedef定义了一个别名Person,可以直接使用Person来定义变量,例如:

Person p;

2. typedef struct可以使代码更加简洁明了,同时可以使结构体类型更加灵活。通过给结构体类型取别名,可以更方便地使用结构体类型,同时也可以在定义结构体类型时同时定义该类型的别名,使得代码更加简洁明了。

例如:

typedef struct {

int x;

int y;

} Point;

typedef struct {

Point start;

Point end;

} Line;

在上面的例子中,我们使用了typedef定义了两个别名Point和Line。使用这些别名可以更方便地定义变量,并且代码更加简洁明了。同时,结构体类型的定义也更加灵活,可以方便地定义嵌套的结构体类型。




类(class)和结构(struct)
        BCL(Base Class Library)是Dot Net Framework下所有语言使用的类库(有哪些类和结构,你就随便说吧,System名字空间的有多少啊~需要注意的是DateTime这玩意其实是一个结构体。)为什么他们不是结构(类)呢?这道题和下面的小问题其实是一个问题那就是什么时候定义...

C语言 struct 和 char* 的问题
include <stdio.h> include <stdlib.h> include <conio.h> include <string.h> struct Student { int *banbie;int *zuowei;char (*xingming)[10];char (*xingbie)[4];float *yuwen;float *shuxue;float *yingyu;int renshu;\/\/ 每个班级的人数 };int main(){ int a=0,b=0,c=0,d=0...

c语言struct a b和不带struct关键字直接声明a b有什么区别?
struct结构体是C语言很有特色的一个数据类型。直接声明a b产生的是两个独立的变量,使用时直接使用变量名a和b即可;而"struct a b"产生的是有变量a和变量b组成的一种集合,它里面包含了a和b两个变量,每个变量都称为结构体的成员(Member),使用时不能单独使用a、b作为变量名,而是需要加上结构体...

c语言struct里还有struct
c语言struct里还有struct,这个是可以有的。比如,定义一个student结构体,里面包含姓名、学号、成绩等,还包含一个出生日期结构体birthday,其中包含出生年、月、日。这个birthday结构体,可以在student结构体的内部定义,也可以在它的外部定义的。

C\/C++语言中struct结构体定义中__packed的作用是什么?
packed是字节对齐的意思。比如说int float double char它的总大小是4 + 4 + 8 + 1 = 17 但如果不用__packed的话,系统将以默认的方式对zhidao齐(假设是4字节),那么它占4 + 4 + 8 + 4 = 20;(不足4字节以4字节补齐)。各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些...

c语言中的struct什么意思啊?
定义一个结构。例如:struct STRA { int x;int y;} A;那么就可以用 A.x 和 A.y 来使用,这样使得逻辑更清楚。

C语言题目求解 struct什么意思 还有t.s[k]和t.c带便什么 请给我推导下...
t.s[k]表示在结构体struct st 定义的t中的字符数组s中的下标为k的字符,同理,t.c表示t中的字符c。运算推导:1:struct st a[4] = {{ '1',"123"},{ '2',"321"},{ '3',"123"},{ '4',"321"}};给结构体数组各个成员分别赋值 2:for(k = 0; k < 4; k++)printf("...

c语言中 struct student {………}stu[N]; stu[N]是什么意思?
struct为关键字结构体;student 为类型名,{}内为结构体的组成成分,如学生的班级、学号、成绩等;stu是一个结构体变量,即一个学生的班级、学号、成绩等信息。现在有N个学生,就需要定义一个结构体数组,stu[N],用来存放N个学生的班级、学号、成绩等信息。

在结构题struct 命名和括号尾命名的区别
在结构题struct 命名和括号尾命名的区别 在C语言里面,struct是用来定义新的数据类型——结构体,typedef是给数据类型取别名。据说这两个关键词同时使用有助于减少代码量和增加代码的可读性(不过我认为它当typedef和struct在一起的时候反而降低了代码的可读性),很多时候为了方便,我们常常讲stuct与typedef...

请问C++的类和C里面的struct有什么区别
(1)C++类中属性默认访问类型为private,而c++中的struct默认的访问类型为public (2)c++类可以有继承,虚函数,多态,而c++中struct不可以。C语言struct里面不可以有函数,只能有变量。 C++给C中的struct功能扩展了

乳山市13345971887: C语言结构体中struct和typedef struct有什么区别? -
谭匡清瘟: C语言结构体中struct和typedef struct区别为:声明不同、访问不同、重新定义不同. 一、声明不同 1、struct:struct可以直接使用结构体名字声明结构体. 2、typedef struct:typedef struct的为.修饰结构体,结构体有了别名,通过结构体别名声明...

乳山市13345971887: C语言typedef struct的用法 -
谭匡清瘟: C被定义成了一个类型,这样用: C myStructC; myStructC.a = 0.0; myStructC.b = 0;

乳山市13345971887: C语言中typedef struct和struct区别 -
谭匡清瘟: 举个例子说明: typedef struct abc {int x; int y; int z; }ABC; 是将结构体abc类型重新起个名字为ABC,以后再定义同一类型的变量时,可以写成: ABC m,n; 与: struct abc m,n; 作用是一样的. 可将复杂数据类型简单化

乳山市13345971887: C语言中typedef的定义 -
谭匡清瘟: 就是起个别名 在这里用PERSON替代了struct data. 用LINK替代了PERSON*,也就是struct data*. new = (LINK)malloc(sizeof(PERSON));的意思是 new = (struct data*)malloc(sizeof(struct data));

乳山市13345971887: 求解答c语言结构体定义中typedef的作用 -
谭匡清瘟: c语言结构体定义中typedef的作用是为一种数据结构体定义一个新名字. 在c语言中使用typedef帮助定义结构体,对于声明结构体变量,便可以直接使用typedef xxx(结构体名 对象名)的形式,而没必要带上struct关键词.实际项目C代码中,结...

乳山市13345971887: C语言的typedef struct s ss的意义? -
谭匡清瘟: #include<stdio.h> struct s {int a;char c;};typedef struct s ss; void main() {ss k;k.a=1;k.c='A';printf("%d,%c\n",k.a,k.c); } //typedef 是给类型 弄个别名 是这样用的

乳山市13345971887: C语言中的typedef问题指什么?
谭匡清瘟: 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类 型(int,char等)和自定义的数据类型(struct等). 在编...

乳山市13345971887: C语言结构体 - 请问这两者有何区别typedefstructb
谭匡清瘟: 以下为我所理解:第3种写法实际上做了两件事情:第一,定义结构体:struct node{ int a;};第二,定义一个该结构体类型的变量:struct node ab;也就是说第3种写法相...

乳山市13345971887: c语言typedef struct -
谭匡清瘟: X表示struct A 的对象 使用的时候是X.a(用操作符.) Y表示struct A 的指针对象 使用的时候是Y->a(用操作符->) 一个是普通对象,一个是指针对象

乳山市13345971887: typedef struct node *link 什么意思(c语言)? -
谭匡清瘟: 意思是给struct node *取别名为link,也就是说代码中出现link的地方等价于struct node *. 进一步地说link是一种指向node结构体的指针类型.typedef是C语言中给类型起别名的关键字,代码中其他地方出现别名等价于typedef重命名的类型

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网