精华内容
下载资源
问答
  • }结构类型变量的说明结构体定义并不是定义一个变量,而是定义了一种数据类型,这种类型是你定义的,它可以和语言本身所自有的简单数据类型一样使用(如 int )。结构体本身并不会被作为数据而开辟内存,真正作为...
  • 以下是对C++中结构体定义、初始化和引用进行了详细的介绍,需要的朋友可以过来参考下
  • 在结构体定义一个结构体类型变量可以吗typedefstructList_2{charClass_Name[Name_Maxsize];charClass_Term;charClass_Score;Stu_Score*next;}Stu_Score;typedefstructTree_1{intRoom_ID;Stu_Room*lchild,*rchild...

    在结构体中定义另一个结构体类型变量可以吗

    typedef struct List_2

    {

    char Class_Name[Name_Maxsize];

    char Class_Term;

    char Class_Score;

    Stu_Score *next;

    }Stu_Score;

    typedef struct Tree_1

    {

    int Room_ID;

    Stu_Room *lchild,*rchild;

    }Stu_Room;

    typedef struct List_1

    {

    int Stu_ID;

    char Stu_Name[Name_Maxsize];

    Stu_Score *Stu_Score_List_P;

    Stu_Room *Stu_Room_Tree_P;

    Stu_Infomation *next;

    }Stu_Infomation;

    ------解决方案--------------------

    没问题啊~~

    ------解决方案--------------------

    可以的,这样定义

    另外一个结构体就变成了成员了

    ------解决方案--------------------

    在结构体中定义另一个结构体类型变量

    在结构体中定义指向另一个结构体类型的指针变量

    不是一回事。

    尽管两者都可以。

    ------解决方案--------------------

    引用:typedef struct List_Stu_Infomation

    {

    int Stu_ID;

    char Stu_Name[Name_Maxsize];

    struct List_Stu_Infomation *next;

    }Stu_Infomation;

    可以编译

    typedef struct List_Stu_Infomation//ѧÉúÐÅÏ¢±í½á¹¹

    {

    int Stu_ID;

    char Stu_Name[Name_Maxsize];

    Stu_Infomation *next;

    }Stu_Infomation;

    编译报错

    可见楼主没弄清楚这里的typedef是干什么的

    typedef struct A

    {

    int x;

    } B;

    这段代码实际上是两个功能的组合

    第一个功能:strcut A { int x; }定义一个名为struct A的结构体

    第二个功能:typedef struct A B;声明struct A的另一个名称B

    所以,楼主的代码中,直到B;这一行为止,typedef这条语句都尚未完成,此时编译器根本就不知道有一个叫B的东西

    所以楼主在struct A这个结构体里面,只能使用struct A来指代本类型

    容易混淆的是,在C++中,struct A直接定义一个名为A的结构体,不需要typedef

    ------解决方案--------------------

    #define Name_Maxsize 10

    typedef struct List_2

    {

    char Class_Name[Name_Maxsize];

    char Class_Term;

    char Class_Score;

    struct List_2 *next;

    } Stu_Score;

    typedef struct Tree_1

    {

    int Room_ID;

    struct Tree_1 *lchild,*rchild;

    } Stu_Room;

    typedef struct List_1

    {

    int Stu_ID;

    char Stu_Name[Name_Maxsize];

    struct List_2 *Stu_Score_List_P;

    struct Tree_1 *Stu_Room_Tree_P;

    struct List_1 *next;

    } Stu_Information;

    int main() {

    Stu_Information si;

    si.Stu_ID=0;

    return 0;

    }

    ------解决方案--------------------

    引用:Quote: 引用:typedef struct List_Stu_Infomation

    {

    int Stu_ID;

    char Stu_Name[Name_Maxsize];

    struct List_Stu_Infomation *next;

    }Stu_Infomation;

    可以编译

    typedef struct List_Stu_Infomation//ѧÉúÐÅÏ¢±í½á¹¹

    {

    int Stu_ID;

    char Stu_Name[Name_Maxsize];

    Stu_Infomation *next;

    }Stu_Infomation;

    编译报错

    可见楼主没弄清楚这里的typedef是干什么的

    typedef struct A

    {

    int x;

    } B;

    这段代码实际上是两个功能的组合

    第一个功能:strcut A { int x; }定义一个名为struct A的结构体

    第二个功能:typedef struct A B;声明struct A的另一个名称B

    所以,楼主的代码中,直到B;这一行为止,typedef这条语句都尚未完成,此时编译器根本就不知道有一个叫B的东西

    所以楼主在struct A这个结构体里面,只能使用struct A来指代本类型

    容易混淆的是,在C++中,struct A直接定义一个名为A的结构体,不需要typedef+1

    ------解决方案--------------------

    感觉一个是全局的,一个是局部的(在结构体内定义的结构体,不能被外部调用定义新参数)

    131115100.gif

    展开全文
  • 本文进行讨论的是,Linux中,C/C++语言的结构体的使用情况。一般情况下,结构体的使用还是相对比较简单的,...这个结构一携带的就是一个人的两个基本信息,年龄(age)和身高(height),同样你也可以继续添加人的相关信

    本文进行讨论的是,在Linux中,C/C++语言的结构体的使用情况。一般情况下,结构体的使用还是相对比较简单的,它携带的一类物体的某一些属性,

    比如

    struct person
    {
       int age;
       int height;
      //...  
    };
    

    这个结构一携带的就是一个人的两个基本信息,年龄(age)和身高(height),同样你也可以继续添加人的相关信息进去,比如学号,班级等。

    但是今天讨论的是在结构体中定义一个结构体指针的问题,当然这也可以延伸到结构体定义一个普通类型的指针方面,读者可以自行进行验证或者思考,本文

    不作讨论。

    typedef struct tagStudent_T
    {
        int i_StuID;
        int i_StuClass;
    }Student_T;
    
    typedef struct tagSchool_T
    {
        Student_T *student;
        int i_SchoolRank;
    }School_T;
    

    上述的两个结构体表示的含义是:

    第一个: 学生的个人信息

    第二个:学校的情况(包含了学生的信息和学校的排名)

    接下来,如果要对Statuend_T的结构体的变量进行设置,那么有两种方法,第一个直接使用Student_T定义的变量进行赋值,第二个就是使用School_T进行间接赋值,

    今天就是讨论第二种的方法。

    首先,在一个程序运行过程中,实际上是内存指针在操作,因此我们定义School_T的指针*school,具体的操作如下程序

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    
    typedef struct tagStudent_T
    {
        int i_StuID;
        int i_StuClass;
    }Student_T;
    
    typedef struct tagSchool_T
    {
        Student_T *student;
        int i_SchoolRank;
    }School_T;
    
    int main(int argc,char const *argv[])
    {
        School_T *school = (School_T *)malloc(sizeof(School_T));
        if(NULL != school)
        {
             school->i_SchoolRank = 1;  //rank first 
             
            /*由于School_T中定义的student是一个结构体指针,必须要对其进行分配内存*/
            school->student = (Student_T *)malloc(sizeof(Student_T));
            if(NULL != school->student)
            {
                    school->student->i_StuID = 12345;
                    school->student->i_StuClass = 5;
            }      
            else
            {
                free(school);
            }
        }        
        
        /*这两个的free顺序最好不要调转,因为如果先free掉school的话,相当于将student得本体free了,相当于一个野指针 */    
        free(school->student);
        free(school);
    }    

    如果你不想使用这种方式,大可直接使用变量,不是指针类的变量,如School_T school。同样School_T结构体重使用的也是一个普通的变量,即Student_T student,这样,

    你就不需要进行内存指针的操作。但是本人建议还是使用指针来进行,效率相对而言会更快一点。可以参考一些<C和指针>这本书

     

    (注:上述的编译只在Ubuntu下的Linux系统操作,其他的win,vs等没有进行测试)

     

    展开全文
  • 本篇文章是对C语言中结构体指针的定义与引用进行了详细的分析介绍,需要的朋友参考下
  • C语言中的“结构体”其实就相当于其他高级语言中的“记录”,结构体定义方法如下:  例如: Struct student { int num;  char name[20];  char sex;  int age;  float score;  char addr[30]; };...
  • 定义一个结构体变量(包括年、月、日)。计算该日本年中是第几天,注意闰年的问题。 2.编写一个函数print, 打印一个学生的成绩数组, 该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入...
  • 如何在结构体定义函数

    千次阅读 2020-04-30 09:28:28
    malloc.h //内存管理控制器 struct _m_mallco_dev { void (*init)(u8); //初始化 u8 (*perused)(u8);... //内存池,管理SRAMBANK区域的内存 u16 *memmap[SRAMBANK]; //内存状态表 u8 memrdy[SRAMBAN...
    malloc.h
    
    //内存管理控制器
    struct _m_mallco_dev
    {
    	void (*init)(u8);  		//初始化
    	u8 (*perused)(u8); 		//内存使用率
    	u8 *membase[SRAMBANK]; //内存池,管理SRAMBANK个区域的内存
    	u16 *memmap[SRAMBANK];  //内存状态表
    	u8 memrdy[SRAMBANK];   //内存管理是否就绪
    };
    
    extern struct _m_mallco_dev mallco_dev;  //在malloc.c里面定义
    
    malloc.c
    
    //内存管理控制器
    struct _m_mallco_dev mallco_dev=
    {
    	mymem_init,							//内存初始化
    	mem_perused,						//内存使用率
    	mem1base,mem2base,mem3base,			//内存池
    	mem1mapbase,mem2mapbase,mem3mapbase,//内存管理状态表
    	0,0,0,  		 					//内存管理未就绪
    };
    
    //内存管理初始化  
    //memx:所属内存块
    void mymem_init(u8 memx)
    {
    	mymemset(mallco_dev.memmap[memx],0,memtblsize[memx]*2); //内存状态表清零
    	mymemset(mallco_dev.membase[memx], 0,memsize[memx]);	//内存池所有数据清零  
    	mallco_dev.memrdy[memx]=1;								//内存管理初始化OK  
    }
    
    

    要注意定义结构体的时候不能直接定义函数,C语言的struct中只有成员,不能有函数,所以只能定义指向函数的指针。

     

    展开全文
  • }定义一个名为struct A的结构体 第二个功能:typedef struct A B;声明struct A的另一个名称B 所以,楼主的代码中,直到B;这一行为止,typedef这条语句都尚未完成,此时编译器根本就不知道有一个叫B的东西 所
    typedef struct A
    
    {
    int x;
    } B;
    这段代码实际上是两个功能的组合
    第一个功能:strcut A { int x; }定义一个名为struct A的结构体
    第二个功能:typedef struct A B;声明struct A的另一个名称B
    所以,楼主的代码中,直到B;这一行为止,typedef这条语句都尚未完成,此时编译器根本就不知道有一个叫B的东西
    所以楼主在struct A这个结构体里面,只能使用struct A来指代本类型

    容易混淆的是,在C++中,struct A直接定义一个名为A的结构体,不需要typedef
    展开全文
  • 结构体结构体数组的定义

    万次阅读 多人点赞 2020-07-19 23:29:15
    1.结构体 结构体是用户自定义的可用的数据类型,它允许您存储不同类型的数据项。...定义结构体变量: struct STU stu1,stu2; (2)定义了一个结构体STU的同时定义了两个结构体STU的变量stu2,stu3。 struct
  • 编写一个程序,定义一个结构体Book,包括成员:书号ISDN, 书名 name, 作者 author,价格 price。通过结构体变量定义结构体数组,存放下表所示的信息; 找出价格小于40元的书,并将其所有信息输出。 书号 书名 ...
  • Android 结构体定义

    2014-08-27 17:05:51
    Android 中向服务器发送数据的时候可以定义结构体,便于后期的数据的添加,方便 简单
  • 定义嵌套结构体数组

    2017-01-21 16:29:28
    定义复杂结构体—包括嵌套结构体数组,并显示结构体所占字节数。
  • 结构体定义与使用 结构体是一种构造数据类型 把不同类型的数据组合成一个整体 结构体定义形式: struct 结构体名{ 结构体所包含的变量或数组 ...请看下面的一个例子: struct stu{ char name[]; //姓...
  • 结构体定义一个函数指针

    千次阅读 2018-08-01 22:39:53
    #include <stdio.h> struct DEMO { int x,y; int (*func)(int,int); //函数指针 }; int add1(int x,int y) ... //结构体函数指针赋值 ... //结构体函数指针赋值 ...结构体定义一个函数指针。
  • 是这样的,在结构体中,我定义handler是一个指向函数的指针变量,cmd是指向控制台输入的命令的指针变量。根据cmd值的不同,程序将不同的函数地址赋给handler。c中,可以这么定义,int (*handler)(),但是我不知道...
  • 这样定义对么 编译时报错 缺少;*前面 这是哪错了啊 请高手指点指点![图片说明](https://img-ask.csdn.net/upload/201603/25/1458885183_62700.png)
  • 定义在结构体里面的宏

    千次阅读 2019-04-24 19:12:00
    2、在结构体里面定义一个宏,在结构体外面也可以定义同样的宏,如果两个宏的内容不一样,那么使用的地方,哪个宏近就使用哪个。  宏就是替换,从上面开始,一直往后面替换。如果宏新定义了,那么就使用宏的新值...
  • 结构体定义、初始化和赋值

    千次阅读 2021-05-21 12:26:09
    C语言中,结构体(struct)指的是种数据结构,是C语言中聚合数据类型(aggregate data type)的类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素...
  • 先自定义一个结构体,比如: struct Table{short int a;long b;short intc;long d;};struct Table Tab[10]; 以下的函数即是用于清空结构体的,需要传入的两个参数分别为结构体的起始地址和结构体的长度。 ...
  • 主要介绍了Go语言结构体定义和使用方法,以实例形式分析了Go语言中结构体的定义和使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • C#中定义结构体主要形式为 using System.Runtime.InteropServices; //结构体属性(一字节对齐),不写的话默认4字节对齐 [StructLayout(LayoutKind.Swquential,CharSet=CharSet.Ansi,Pack=1)] public sturct ...
  • 如何java中定义一个结构体

    千次阅读 2021-02-12 16:46:11
    展开全部像C/C++的,第三方的62616964757a686964616fe78988e69d8331333337396330Javolution库提供了类似的解决方案:enumGender{MALE,FEMALE};structDate{unsignedshortyear;unsignedbytemonth;unsignedbyteday;};...
  • c语言定义个结构体

    2021-05-19 16:52:27
    内容导航:Q1:C语言中定义一个结构体如何不同的.C文件中使用。#include然后就用啊正式一点的,可以声明extren struct XXX;就可以了注意头文件需要用#ifndef #define #endif或者#pragama once,确保头文件只引入一...
  • C语言结构体定义

    2021-01-19 22:46:38
    C语言中的“结构体”其实就相当于其他语言中的“记录”,结构体定义方法如下:  例如: Struct student { int num;  char name[20];  char sex;  int age;  float score;  char addr[30]; };...
  • 该资源VS2008SP1 IDE中编写, 主要实现了VC++中定义和使用结构体,另外还实现了结构体和vector的结合使用,将为你学习结构体产生重要帮助。
  • 2)在结构体定义一个数组,可以用赋值语句拷贝整个数组,这也是数组间赋值的一个间接实现方式 3)在结构体定义一个数组,可以传值调用的方法把它传递给函数做实参 4)在结构体定义一个数组,可以作为函数的...
  • C语言结构体结构体引例结构体变量的定义结构体变量的使用结构体变量作为函数参数结构体变量的初始化 结构体 引例 输出平均分最高的学生信息 #include <stdio.h> struct student { int num; char name[10]; ...
  • 一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制和粘贴 10 次吗?...定义结构体数组的方法很简单,同定义结构体变量是一样的,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 389,132
精华内容 155,652
关键字:

在结构体里定义一个结构体