精华内容
下载资源
问答
  • typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。下面就一起来看看
  • typedef structstruct的使用

    千次阅读 2018-08-24 18:14:43
    typedef structstruct的使用 //以下student是标识符(标识符是用户编程时使用的名字,对于变量、常量、函数、语句块也有名 字;),stu则为变量类型(类比int和char等),pstu相当于(int*)。 typedef struct...

    typedef struct 和 struct的使用

    //以下student是标识符(标识符是用户编程时使用的名字,对于变量、常量、函数、语句块也有名
    字;),stu则为变量类型(类比intchar等),pstu相当于(int*)。
    typedef struct student{
        string name;
        int age;
    }stu,*pstu;
    //C++中,ss为结构体类型
    struct ss{
        string name;
        int age;
    };
    int main(){
    //变量类型==struct+标识符
        //使用变量类型+结构变量名
        stu xiaoming;
        //或者使用stuct+标识符+结构变量名
        struct student zhangsan;
        //c++ struct+结构变量名
        ss lisi;
        xiaoming.name="xiaoming";
        xiaoming.age=18;
        zhangsan.name="zhangsan";
        zhangsan.age=17;
        lisi.name="lisi";
    }
    
    展开全文
  • 例:struct Student{char name[20];int age;};结构体自定义数据类型,定义完成后等同于内置类型。1.结构体不能定义一个自身的普通成员,但可以定义一个指向自身的指针。例:struct Student{char name[20];int age;};...

    一.struct 结构体框架 : 

    struct    类型名

    {        

    }

    例:struct Student

    {

    char name[20];

    int age;

    };

    结构体自定义数据类型,定义完成后等同于内置类型。

    1.结构体不能定义一个自身的普通成员,但可以定义一个指向自身的指针。

    例:

    struct Student

    {

    char name[20];

    int age;

    };

    struct A

    {

    struct Student e;    //ok

    struct B f;            //error B未定义

    struct A g;          //error,因为无法确定g的大小,不能给它分配内存空间

    struct A *p;        //ok

    };

    2.结构体普通变量通过"."号访问它的成员,而结构体指针通过"->"号访问它的成员。

    struct Student

    {

    char name[20];

    int age;

    };

    struct Student  stu1;//stu1的name和age为随机值

    struct Student  stu2={"zhang"};//name=zhang,age=0 因为stu2为聚合类型

    struct Student  stu3={"li",25};

    若要将stu3的age变为30   进行操作  stu3.age=30;

    若要将stu3的name变为"wang"   进行操作strcpy(stu3.name,"wang");

    struct Student *pstu=&stu2;

    若要将stu2的age变为35      进行操作pstu->age=35//也可以(*pstu).age=35;一般用"->"

    若要将stu2的name变为"sun"   进行操作strcpy(pstu->name,"sun");//也可以strcpy((*pstu).name,"sun");一般用"->"

    例:

    #include <stdio.h>
    #include<string.h>
    struct Student 
    {
    	char name[20];
    	int age;
    };
    void show(struct Student *s)
    {
    	printf("name:%s\nage:%d\n\n",s->name,s->age);
    }
    int main()
    {
    	struct Student  stu1;//stu1的name和age为随机值
    	struct Student  stu2={"zhang"};//name=zhang,age=0 因为stu2为聚合类型
    	struct Student  stu3={"li",25};
    	printf("stu1:\n");
    	show(&stu1);
    	printf("stu2:\n");
    	show(&stu2);
    	printf("stu3:\n");
    	show(&stu3);
    
    	//若要将stu3的age变为30   进行操作  stu3.age=30;
        //若要将stu3的name变为"wang"   进行操作strcpy(stu3.name,"wang");
    	 stu3.age=30;
    	 strcpy(stu3.name,"wang");
    	 printf("修改后的stu3:\n");
    	 show(&stu3);
    
    	 struct Student *pstu=&stu2;
          //若要将stu2的age变为35      
    	// 进行操作pstu->age=35也可以(*pstu).age=35;
    	  
         //若要将stu2的name变为"sun"   
    	 //进行操作strcpy(stu2->name,"sun");也可以strcpy((*pstu).name,"sun");
          pstu->age=35;
    	  strcpy(pstu->name,"sun");
    	  printf("修改后的stu2:\n");
    	   show(&stu2);
    	return 0;
    }

    结果:


    二.typedef

    typedef 数据类型 新数据类型     //它用于类型定义,就相当于给一个类型起一个新名称

    typedef unsigned long long int unit64;        //给unsigned long long int 起新名称为unit64

    unit64 a;            //变量a的类型unsigned long long int 

    区分:

    typedef  int * Pint;

    #define  PINT int *

    Pint i,j;        //i,j的类型都为int *

    PINT x,y;     //x的类型为int * ,y的类型为int 


    typedef int Arr[10];

    Arr a;      //定义一个长度为10的int 数组,数组名为a

    例:

    typedef int Arr[10];
    
    int main()
    {
    	Arr a;
    	printf("%d\n",sizeof(a));
    	return 0;
    }

    结果:


     typedef int (*pfun)(int ,int);

    pfun p;       //变量p为一个返回值int,函数形参为两个int的函数指针

    例:

    int Max(int a,int b)
    {
    	return a>b?a:b;
    }
    
    typedef int (*pfun)(int,int);
    
    int main()
    {
    	pfun p=Max;
    	printf("%d\n",p(2,6));
    	return 0;
    }

    结果:



    用typedef 简略结构体名称

    例:struct Student

    {

    char name[20];

    int age;

    };

    定义结构体变量时要加上struct 比较麻烦

    struct Student e;

    为了简略用typedef 给struct Student起新名称为Student

    typedef struct Student Student;

    此时定义结构体变量时为 Student e;

    例:

    struct Student 
    {
    	char name[20];
    	int age;
    };
    
    typedef struct Student Student;
    int main()
    {
    	Student e={"wang",23};
    	printf("name:%s\nage:%d\n",e.name,e.age);
    	return 0;
    }

    结果:


    在C++中通常使用

    typedef struct Student

    {

    char name[20];

    int age;

    }Student;          //Student为给struct Student起的新名称

    例:

    typedef struct Student 
    {
    	char name[20];
    	int age;
    }Student;
    
    
    int main()
    {
    	Student e={"wang",23};
    	printf("name:%s\nage:%d\n",e.name,e.age);
    	return 0;
    }

    结果:





    展开全文
  • C语言中struct typedef 以及结构体指针用法

    万次阅读 多人点赞 2019-03-04 18:42:29
    structtypedef以及结构体指针用法 typedef用法结构体指针用法结构体初始化   typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于: 若struct node{ }这样来定义结构体的话。...

    struct 、typedef以及结构体指针用法


      typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于:

    • 若struct node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:struct node n;
    • 若用typedef,可以这样写:typedef struct node{}NODE; 。在申请变量时就可以这样写:NODE n;其实就相当于 NODE 是node 的别名。区别就在于使用时,是否可以省去struct这个关键字。 有些时候,typedef struct NODE{ }NODE;还是可以直接NODE n;定义一个NODE类型的结构体

    typedef用法

    用法举例1:在C中定义一个结构体类型时如果要用typedef:

    typedef struct Student
    {
       int no;
       char name[12];
    }Stu,student;
    

    于是在声明变量的时候就可:Stu stu1;或者:student stu2;(Stu 和student 同时为Student的别名)
    用法举例2:如果没有typedef,传统定义一个结构体:

    struct Student
    {
       int no;
       char name[12];
    }Stu;
    

    此时说明已经定义了一个结构体Stu变量,如果要重新新建,就必须用struct Student stu1;
    用法举例3:如果使用了typedef,另外这里也可以不写Student(于是也不能struct Student stu1;了)

    typedef struct
    {
       int no;
       char name[12];
    }Stu;
    

    用法举例4:typedef 还可以掩饰复合类型,如指针和数组。定义一个 typedef,每当要用到相同类型和大小的数组时,可以这样

    typedef char Line[81]; 
    

    此时Line类型即代表了具有81个元素的字符数组,使用方法,例如Line text, secondline;

    结构体指针用法

    结构体指针用法1
    结构体要自引用时,Student1是错误用法。试想引用成员next是另一个完整的结构,其内部还将包含它自己的成员next,这第二个成员又包含一个完整的结构,它还将包括它自己的成员next,这样重复下去永无休止,内存都用光了。所以不合法。

    struct Student1
    {
       int age;
       struct Student1 next;
    };
    

    正确的用法是:结构体自引用 ,只能自引用指针。编译器在结构的长度确定之前就已经知道指针的长度,所以这种自引用是合法的。结构体的自引用在实现链表,树等高级的操作时用处很大。

    struct Student1
    {
    	int age;
    	struct Student *next; 
    };
    

    结构体指针用法注意:这样是不行的,虽然Student1代表了结构体,但是Student1类型名的声明是在末尾定义,当要声明struct{ }时,内部无法识别Student1类型。

    typedef struct 
    {
    	int age;
    	Student1 *next; 
    }Student1,*StudentPtr;
    

    结构体指针用法2
    注意此时,Student1是struct Student{}的别名,StudentPtr是Student的指针

    typedef struct Student1
    {
    	int age;
    	Student1 *next; 
    }Student1,*StudentPtr;
    

      我使用StudentPtr时出现了个有意思现象,结构体指针若不手动分分配内存,讲道理是不能用的。当定义了两个结构体指针s1,s2,两个结构体指针都不分配内存,给其中一个赋值,然后使用没有问题,输出良好。

    #include <stdio.h>
    typedef struct Student1
    {
    	int age;
    	 Student1 *next; 
    }Student1,*StudentPtr;
    int main()
    {
    	StudentPtr  s1;
    	StudentPtr  s2;
    	s1->age= 9;
    	printf("%d",s1->age);
    	return 0;
    }
    

      当尝试给另一个结构体指针赋值时,编译没有问题,程序运行奔溃。

    在这里插入图片描述
    在这里插入图片描述
      正确用法应该是

    1. 结构体指针需要初始化
    2. 结构体指针的成员指针同样需要初始化
    3. 若直接使用结构体,结构体中有成员指针,成员指针也要先初始化

    在这里插入图片描述

    结构体初始化

      结构的初始化方式和数组初始化很相似。一个位于一对花括号内部,由逗号分隔的初始值列表可用于结构的初始化。这些值根据结构成员列表的顺序写出。
    在这里插入图片描述

    展开全文
  • Struct struct string ... char name[8]; int age; char sex[2]; } person,person1[20]; struct string { char name[8]; int age; char sex[2]; } ; struct string person; stru...

    Struct

    struct string 
    { 
        char name[8]; 
        int age; 
        char sex[2]; 
    } person,person1[20]; 
    
    struct string 
    { 
        char name[8]; 
        int age; 
        char sex[2]; 
    } ; 
    struct string person;
    struct string person1[20];
    

    两个写法等价。写在**“struct string{}”** 和 “;” 之间的相当于一个变量。

    typedef

    typedef struct STU{
        char name[20];
        int age;
        char sex;
    } Student;
    

    有了这个typedef之后,student就不是一个对象了,是一个别名。即以下两种定义等价:

    struct STU stu1;
    Student stu1;
    

    带数组的:

    //顶点表头
    typedef struct VHead {
    	PtrToVNode firstVer;
    	int EarlistTime;
    }AdjList[MaxVertexNum];
    
    //图
    struct GNode {
    	int Vnum, Enum;
    	AdjList G;
    	//AdjList相当于一个长度为MaxVertexNum的数组,数据类型为struct VHead
    };
    
    展开全文
  • 关于typedefstruct对比

    2020-12-14 18:13:53
    char name [100]; char sex; } int main(){ struct Student st; //定义结构体变量 struct Student * ps=&st; return 0; }  2.如果是typedef typedef int A ; //为int 再重新多取一个名字
  • structtypedef struct彻底明白了

    千次阅读 多人点赞 2018-07-17 16:31:32
    structtypedef struct彻底明白了 转载地址:https://www.cnblogs.com/qyaizs/articles/2039101.html structtypedef struct 分三块来讲述:  1 首先://注意在C和C++里不同  在C中定义一个结构体类型要用...
  • struct char* 使用

    2019-01-10 16:34:00
    1 typedef struct people{ 2 char* name; 3 int age; 4 }PEO; 5 6 void structdemo(){ 7 PEO* peo_0 = malloc(sizeof(PEO)); 8 peo_0->age = 20; 9 peo_0->name = mallo...
  • 结构体定义 typedef struct 用法详解和用法小结

    万次阅读 多人点赞 2018-07-31 22:25:48
    typedef struct 是为了使用这个结构体方便。 具体区别在于: 若struct node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:struct node n; 若用typedef,可以这样写:typedef struct node{}NODE;...
  • typedef struct/union的理解

    千次阅读 2020-10-20 15:58:25
    然后说说typedef的格式,以typedef struct为例。 typedef struct "3、此处可以添加一些内容" { "1、此处可以添加一些内容" }"2、此处可以添加一些内容" 上面描述了typedef struct有3个地方可以加入我们自定义的...
  • enum 与 typedef enum 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作 #define Mon 1 #define Tue 2 #define Wed 3 ... 在此我们可以考虑定义一种新的数据类型:枚举型 ...
  • C语言结构体定义 typedef struct

    千次阅读 2019-09-24 16:34:25
    c语言规范,定义结构体: typedef struct ANSWER_HEADER { u8 u8Type; u8 u8Code; u32 u32TimeStamp; struct ANSWER_HEADER *pNext; }ANSWER_HEADER_T, *PANSWER_HEADER_T; ANSWER_HEADER为结构名,这个...
  • 这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于...
  • Typedef Struct 用法详解

    千次阅读 2015-08-05 10:34:00
    Typedef Struct 用法详解 一、typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间。 实例像: typedef int INT; typedef int ...
  • typedef struct 指针

    千次阅读 2019-02-27 14:41:56
    #include &lt;... typedef struct std  {  char name[10];  int year;  }Std,*pStd;    Std s1={"li ming",2019};   pStd p1;  p1=&amp;s1;    printf("s1.na...
  • c语言中structtypedef struct的用法

    多人点赞 2020-08-06 10:08:38
    基本形式 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: struct 结构体名 ... char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在学习小组
  • 关于C语言中typedef structstruct 的用法

    千次阅读 多人点赞 2019-02-12 16:21:12
    关于C语言中typedef structstruct 的用法 之前有几个朋友问我关于这个问题,我让他们去百度,他们说百度上的回答千篇一律,于是就有了写这一篇文章的想法,我也不是什么大咖,只是一个普通的工程师,会尽量的描述...
  • static struct { char a; char b; } hrpsCb; 测试程序如下 #include <stdio.h> static struct { char a; char b; } hrpsCb; int main() { hrpsCb.a = 1; hrpsCb.b = 2; printf("Hello, World! %d %d\n...
  • structtypedef struct

    千次阅读 2015-06-25 11:14:34
    分三块来讲述:  1 首先://注意在C和C++... typedef struct Student  {  int a;  }Stu;  于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明)  这里的Stu实际上
  • 详解 C/C++中structtypedef struct

    千次阅读 2015-11-17 11:12:04
    今天在linux下使用gcc编译的时候忽然出现了【错误:‘s’的存储大小未知】其中s是结构体变量,然后就仔细观察错误原因,结果竟然是...... ... typedef struct Student  {  int a;  }Stu;  于是在声明变量的
  • c语言:typedef + struct + 指针

    千次阅读 2018-11-06 19:51:15
    typedef struct ANSWER_HEADER { u8 u8Type; u8 u8Code; u32 u32TimeStamp; struct ANSWER_HEADER *pNext; }ANSWER_HEADER_T, *PANSWER_HEADER_T;   ANSWER_HEADER为结构名,这个名字主要是为了在...
  • C语言 typedef struct

    2016-08-22 10:51:00
    结构体typedef struct的用法 和结构体的定义 结构体的定义: 1.  struct Person {  char name[20];  char sex;  float height;  int age; }; 只有结构体的定义 2.   struct Person {  char ...
  • C/C++语法知识:typedef struct 用法详解

    万次阅读 多人点赞 2017-12-26 11:11:25
    这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于...
  • 结构体定义 typedef struct 用法详解和用法小结 文章目录结构体定义 typedef struct 用法详解和用法小结0. 前言1. 首先:在C中定义一个结构体类型要用typedef:2. 其次:在c++中如果用typedef的话,又会造成区别:3. ...
  • typedeftypedef struct用法详解

    千次阅读 2013-10-18 17:16:49
    typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和...
  • c/c++结构体的定义及使用:structtypedef struct详细总结(含代码实例)结构体struct详解struct结构体变量一般形式成员的获取和赋值指针和数组数组成员赋值结构体嵌套结构体与函数结构体typedef struct详解一般...
  • Demo1:1.typedef在已有数据类型的基础上定义自己的类型名称(别名)//给int起一个别名(外号)MyInt ...typedef char Color; typedef Color OldColor;//char有Color和OldColor两个别名 typedef unsig

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,735
精华内容 42,694
关键字:

charname9structtypedef