精华内容
下载资源
问答
  • 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. 若直接使用结构体,结构体中有成员指针,成员指针也要先初始化

    在这里插入图片描述

    结构体初始化

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

    展开全文
  • structtypedef struct

    2019-11-05 11:09:12
    多了typedef 主要是为了使用结构体方便 说明 struct node { } //在申请node 的变量时,需要...typedef struct node{ }NODE; //在申请变量时就可以这样写 NODE n; 区别 使用时,是否可以省去struct这个关键字。 ...

    多了typedef 主要是为了使用结构体方便

    说明

    struct node {
    
    }
    //在申请node 的变量时,需要这样写
    struct node n;
    
    typedef struct node{
    
    }NODE; 
    //在申请变量时就可以这样写
    NODE n;
    

    区别
    使用时,是否可以省去struct这个关键字。

    展开全文
  • structtypedef struct

    2016-09-27 09:36:00
    在c语言里面: typedef是类型定义的意思。typedef struct 是为了在c语言里面创建结构体变量更方便。...若用typedef,可以这样写,typedef struct{}node; 在申请变量时就可以这样写,node n; 区别就在...

    在c语言里面:

    typedef是类型定义的意思。typedef struct 是为了在c语言里面创建结构体变量更方便。
    具体区别在于:

    • 若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n;
    • 若用typedef,可以这样写,typedef struct{}node; 在申请变量时就可以这样写,node n;

    区别就在于使用时,是否可以省去struct这个关键字。

    //usage of struct and typedef in c.
    //ex1
    struct node{
        int a;
        int *p;
    };
    struct node n;
    //ex2
    typedef struct{
        int a;
        int *p;
    }node;
    node n;

     


     

    在c++里面:

    可以直接struct node{};  申请变量时候直接 node n;

    //usage of struct and typedef in c++.
    struct node{
        int a;
        int *p;
    };
    node n;

     

    转载于:https://www.cnblogs.com/yueshangzuo/p/5911605.html

    展开全文
  • typedef struct Node { int data; struct Node* next; }NodeCopy; typedef起定义类型别名的作用,NodeCopy是别名,其代表的是typedefNodeCopy中间部分的内容,Node是结构体类型名, (2)第二种形式:可以用...
  • structtypedef struct的区别

    千次阅读 多人点赞 2016-08-21 17:03:25
    typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。...若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n; 区别就在于使用时,是否可以省去str
  • typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。...若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n; 区别就在于使用时,是否可以省去str
  • typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。 具体区别在于: ...若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,...
  • 在以前学c语言时候用struct时是这样的:#include &...struct node{ int a; }; int main() { node b; return 0; } c语言规定要用struct node b;来声明一个对象,或者如下:#include &lt;stdio.h&gt...
  • typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。...若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n; 区别就在于使用时,是否可以省去str
  • struct L_Node{ // struct L_Node 为结构体名 int data; char *next; }; struct L_Node node; //node 为结构体变量 2)定义结构体同时定义结构体变量 struct L_Node{ // struct L_Node 为结构体名 int data; ....
  • typedefstruct

    2019-05-10 19:49:52
    typedefstruct typedef struct ListNode { int data; struct ListNode *next; }Node,*List_Pointer; 其实就是 struct ListNode { int data; struct ListNode *next; }; 加上 typedef struct ListNode N...
  • typedef struct

    2016-03-15 15:04:00
    突然忘了这玩意儿了。。今天就来搞一发 typedef是类型定义的意思。typedef struct 是为了使用这个结构体...若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n;区别就在于使...
  • 有关typedef struct Node{ }Node, *LinkedList;问题的解惑

    千次阅读 多人点赞 2019-10-03 19:46:40
    typedef struct QNode { QElemType data; //数据域 struct QNode *next; //指针域 }QNode,*QueuePtr; typedef struct { QueuePtr front; //队头指针 QueuePtr rear; //队尾指针 }; 先来解释下上面第...
  • 结构体定义 typedef struct 用法详解和用法小结

    万次阅读 多人点赞 2018-07-31 22:25:48
    typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。 ...若用typedef,可以这样写:typedef struct node{}NODE; 。在申请变量时就可以这样写:NODE n;其实就相当于 NODE 是nod...
  • typedef struct QNode { QElemType data; //数据域 struct QNode *next; //指针域 }QNode,*QueuePtr; typedef struct { QueuePtr front; //队头指针 QueuePtr rear; //队尾指针 }; 先来解释下上面第...
  • 前言 数据结构没学好,重新看一...warning C4091: “typedef ”: 没有声明变量时忽略“node”的左侧 定义 struct 名称 { // 成员 }; typedef struct 名称 { // 成员 } 别名; 无typedef的声明方式 // 有名字的结构
  • typedef structstruct

    2012-04-26 16:11:08
    typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。...若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n; 区别就在于使用时,是否可以省去str
  • 【C语言】typedef struct node{}a,*b;到底是什么意思?

    千次阅读 多人点赞 2020-04-06 12:55:33
    也知道typedef struct node{xxx}b;的意思是将这个结构体命名为b;但是对于这样的代码 typedef struct Node { int value1; int value2; }*p,a; 确不知道这两个表示的什么。首先我们先明确一个typedef最基本的定义 ...
  • typedef structstruct

    2013-08-11 19:53:00
    要写一个单向链表的节点,后面还要用到这个结构体来定义节点或节点的指针变量 就用typedef来为这个结构体...typedef struct Node{ int num; Node *next;}LinkList; 如果不写成上面的形式,那么: 1) struct Nod...
  • typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便...若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n;区别就在于使用时,是否可以省去struct这个关键字...
  • typedef struct node{ } bintree,*tree; 这种就是定义了一个结构体为node,别名bintree,*tree。*tree就相当于建立了一个结构体指针,给struct node *起了一个别名tree。 struct node{ } bintree,*tree; 这种...
  • 转载自:结构体定义typedefstruct用法详解和用法小结 typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于使用时,是否可以省去struct这个关键字: 若struct node {}这样来定义...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,918
精华内容 7,967
关键字:

nodestructtypedef