精华内容
下载资源
问答
  • 结构体 #include //第一步 struct Student { //学号 int no; //姓名 char name[20]; //性别 char sex[10]; //成绩 double score; }; int main(void) { //2.声明结构体类型的变量 struct Student rui ...

    结构体

    #include <stdio.h>
    //第一步
    struct Student
    {
    	//学号
    	int no;
    	//姓名
    	char name[20];
    	//性别
    	char sex[10];
    	//成绩
    	double score;	
    };
    
    
    int main(void)
    {
    	//2.声明结构体类型的变量
    	struct Student rui = {2013001,”锐哥","男",98.5};
    	//rui才分配了内存空间
    	
    	//如何取访问结构体变量中的成员变量 "."
    	
    	//3.动态的赋值  变量.成会员变量名;
    	printf("请输入学生学号:如 2013001\n");
    	scanf(“%d”,&rui.no);
    	printf("请输入学生姓名:如 锐哥\n");
    	scanf("%s",rui.name);
    	printf("请输入学生性别:如 男\n");
    	scanf("%s",rui.sex);
    	printf("请输入学生成绩:如 98.5\n");
    	scanf("%lf",&rui.score);
    	
    	//输出
    	printf("----------输出---------\n");
    	printf("学号:%d\n”,rui.no);
    	printf("姓名:%s\n”,rui.name);
    	printf("性别:%s\n”,rui.sex);
    	printf("成绩:%.2lf\n",rui.score);
    
    	return 0;
    }



    结构体嵌套


    #include <stdio.h>
    //结构体的嵌套
    //结构体类型的变量做另一个结构体的成员变量
    struct Birthday
    {
       int y;
       int m;
       int d;	
    };
    
    struct Student
    {
      int no;
      char name[20];
      int age;//年龄
      struct Birthday birth;//生日
    };
    
    int main(void)
    {
    	struct Student rui = {1306001,"锐哥",22,
    	{1990,1,1}};
    	
    	printf("学号:%d\n",rui.no);
    	printf("%d年 -%d月 -%d日\n",rui.birth.y 
                      ,rui.birth.m,
    	           rui.birth.d);
    	
    	
    	return 0;
    }



    结构体数组

    #include <stdio.h>
    //要有一个结构体类型
    struct Student
    {
       int no;
       char name[20];	
    };//没写分号
    
    
    
    int main(void)
    {
    	//2.声明一个结构体数组
    	struct Student stu[5] = {0};
    	//就能够保存5个学员的信息
    	//循环给结构体数组中得数据赋值
    	for(int i=0;i<5;i++)
    	{
    		printf("学生的学号:\n");
    		scanf("%d",&stu[i].no);
    		printf("学生的姓名:\n");
    		scanf("%s",stu[i].name);
    	}
    	//取值  遍历结构体数组
    	printf("--------输出--------\n");
    	for(int j=0;j<5;j++)
    	{
    		printf("学生的学号:");
    		printf("%d\n",stu[j].no);
    		printf("学生的姓名:");
    		printf("%s\n",stu[j].name);
    	}
    	
    	
    	return 0;
    }


    结构体指针

    #include <stdio.h>
    //第一步
    
    struct Student
    {
    	//学号
    	int no;
    	//姓名
    	char name[20];
    	//性别
    	char sex[10];
    	//成绩
    	double score;	
    };//不要丢分号
    
    
    int main(void)
    {
    	//2.声明结构体类型的变量
    	struct Student rui = {2013001,”锐哥","男",98.5};
    	//rui才分配了内存空间
    	
    	//如何取访问结构体变量中的成员变量 "."
    	//结构体类型的指针变量 指向 结构体变量
    	struct Student * point = &rui;
    	
    	//3.动态的赋值  变量.成会员变量名;
    	printf("请输入学生学号:如 2013001\n");
    	scanf("%d",&point->no);
    	printf("请输入学生姓名:如 锐哥\n");
    	scanf("%s",point->name);
    	printf("请输入学生性别:如 男\n");
    	scanf("%s",point->sex);
    	printf("请输入学生成绩:如 98.5\n");
    	scanf("%lf",&point->score);
    	
    	//输出
    	printf("----------输出---------\n");
    	printf("学号:%d\n",point->no);
    	printf("姓名:%s\n",point->name);
    	printf("性别:%s\n",point->sex);
    	printf("成绩:%.2lf\n",point->score);
    	
    	
    	return 0;
    }


    展开全文
  • //结构体--嵌套结构体结构体数组 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct _parent{ int num; char name[30];...
    //结构体--嵌套结构体和结构体数组
    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct _parent{
        int num;
        char name[30];
        //结构体内部定义结构体,如果不定义嵌套结构体变量,那么该嵌套结构体的属性则会被当作父结构体的属性
        struct son{
            int age;
            char sname[30];
        };
    }Parent;
    
    typedef struct _parent2{
        int num;
        char name[30];
        //结构体内部定义结构体,如果定义嵌套结构体变量,那么该嵌套结构体的属性无法被父结构体调用
        //但是父结构体可以调用嵌套结构体变量
        struct son2{
            int age;
            char sname[30];
        }s1;
    }Parent2;
    
    struct parent3{
        int num;
        char name[30];
    }parr2[2] = { { 5, "父亲5" }, { 6, "父亲6" } };//结构体数组定义初始化二
    
    
    void main()
    {
        /*
        嵌套结构体
        */
        Parent p1;
        p1.num = 1;
        sprintf(p1.name, "父亲");
        p1.age = 12;
        sprintf(p1.sname,"儿子");
        printf("num=%d;name=%s;age=%d;sname=%s\n",p1.num,p1.name,p1.age,p1.sname);
    
        Parent2 p2;
        p2.num = 2;
        sprintf(p2.name, "父亲2");
        p2.s1.age = 13;
        sprintf(p2.s1.sname, "儿子2");
        printf("num=%d;name=%s;age=%d;sname=%s\n", p2.num, p2.name, p2.s1.age, p2.s1.sname);
    
        /*
        结构体数组的定义
        */
        Parent2 parr1[2] = { { 3, "父亲3", 12, "儿子3" }, {4,"父亲4",15,"儿子4"} };//结构体数组定义初始化一
    
        //Parent2 pa1, pa2;
        //Parent2 ptd[2] = { pa1, pa2 };  
        /*
        报错:
        error C2440 : “初始化” : 无法从“Parent2”转换为“int”
        rror C2440 : “初始化” : 无法从“Parent2”转换为“char”
        */
        //不存在这种结构体初始化方式,C语言编译器将pa1当作第一个结构体元素的第一个参数,
        //pa2当作第一个结构体元素的第二个参数
        //所以报错
        Parent2 ptdd[2];
        //memset(ptdd, 0, sizeof(ptdd));
        memset(&ptdd, 0, sizeof(ptdd));
        //两种初始化都正确,推荐使用第二种,因为第二种更加符合memset函数的用法,第二种的指针是指向数组的指针,第一种的指针是指向数组第一个元素的指针
    //这里使用memset()的目的是初始化整个数组,所以第二个比较符合。
    system("pause"); }

     

    转载于:https://www.cnblogs.com/zhanggaofeng/p/5797195.html

    展开全文
  • C语言结构体是一种构造类型,和数组、基本数据类型同样,能够定义指向该种类型的指针。结构体指针的定义相似其余基本数据类型的定义,格式以下数组struct 结构体名 * 指针名;指针好比:codestruct person{char[20...

    C语言中结构体是一种构造类型,和数组、基本数据类型同样,能够定义指向该种类型的指针。结构体指针的定义相似其余基本数据类型的定义,格式以下数组

    struct 结构体名 * 指针名;指针

    好比:code

    struct person{char[20] name; int age;};//先定义一我的的结构体string

    struct person *p;//而后能够定义一我的的结构体指针class

    struct person p1 = {"zhangsan",20};数据类型

    *p = &p1;//结构体指针的初始化gc

    当定义结构体时,若是结构体中的成员又是一个结构体,那么就称为结构体的嵌套。好比:数据

    struct room{语言

    int chair;co

    int computer;

    struct person children;

    };

    嵌套的结构体初始化方式以下:

    struct room r1 = {1,1,{"xiaohong",7}};

    嵌套结构体的初始化参照基本结构体的初始化方式,对结构体的元素分别进行初始化。

    结构体中不能够嵌套自身的结构体,可是能够嵌套指向自身的指针。

    关于上面所述的结构体嵌套及嵌套指向自身的结构体指针,下面有几个实例:

    结构体的嵌套以及结构体指针

    #include "stdafx.h"

    #include

    int main(int argc, char* argv[])

    {

    //结构体指针

    struct office{

    int chair;

    int computer;

    } ;

    struct office officeOne = {10,10};

    struct office *p = &officeOne;

    printf("chair = %d,computer = %d\n",(*p).chair,(*p).computer);

    return 0;

    }

    #include "stdafx.h"

    #include

    //结构体指针以及结构体嵌套

    struct employee{

    char name[10];

    int age;

    };

    int main(int argc, char* argv[])

    {

    //结构体嵌套

    struct office{

    int chair;

    int computer;

    struct employee em;

    } ;

    struct office officeOne = {10,10,{"zhangsan",25}};

    struct office *p = &officeOne;

    printf("chair = %d,computer = %d\nname = %s,age = %d\n",(*p).chair,(*p).computer,officeOne.em.name,officeOne.em.age);

    return 0;

    }

    #include "stdafx.h"

    #include

    //结构体指针以及结构体嵌套结构体指针

    int main(int argc, char* argv[])

    {

    //结构体指针

    struct office{

    int chair;

    int computer;

    struct office *of1;

    } ;

    struct office officeOne = {10,10,NULL};

    struct office officeTwo = {10,10,&officeOne};

    printf("chair = %d,computer = %d\nchair1 = %d,computer1 = %d\n",officeTwo.chair,officeTwo.computer,(*(officeTwo.of1)).chair,(*(officeTwo.of1)).computer);

    return 0;

    }

    展开全文
  • c语言——结构体嵌套一级指针 这里用支了二级指针 struct Person **person = NULL; person = allocateSpace();//分配内存 printPerson(person);//打印Person数组 freeSpace(person);//释放内存 person = NULL;/...

    c语言——结构体嵌套一级指针

    这里用支了二级指针

    void test()
    {
    	struct Person **person = NULL;
    	person = allocateSpace();//分配内存
    	printPerson(person);//打印Person数组
    	freeSpace(person);//释放内存
    	person = NULL;//置空,防止野指针
    }
    

    运行

    Name:Name_1 Age:100
    Name:Name_2 Age:101
    Name:Name_3 Age:102
    Name:Name_1的内存被释放!
    Name:Name_2的内存被释放!
    Name:Name_3的内存被释放!
    

    原理

    在这里插入图片描述

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    struct Person
    {
    	char *name;
    	int age;
    };
    
    //分配内存
    struct Person** allocateSpace()
    {
    	struct Person **temp = malloc(sizeof(struct Person *) * 3);
    
    	for (int i = 0; i < 3; ++i)
    	{
    		temp[i] = malloc(sizeof(struct Person));
    
    		temp[i]->name = malloc(sizeof(char)* 64);
    
    		sprintf(temp[i]->name, "Name_%d", i + 1);
    
    		temp[i]->age = 100 + i;
    	}
    
    
    	return temp;
    }
    
    //打印
    void printPerson(struct Person **person)
    {
    	if (NULL == person)
    	{
    		return;
    	}
    
    	for (int i = 0; i < 3; ++i)
    	{
    		printf("Name:%s Age:%d\n",person[i]->name,person[i]->age);
    	}
    }
    
    //释放内存
    void freeSpace(struct Person **person)
    {
    
    	if (NULL == person)
    	{
    		return;
    	}
    
    	for (int i = 0; i < 3; ++i)
    	{
    		if (person[i] == NULL)
    		{
    			continue;
    		}
    
    		if (person[i]->name != NULL)
    		{
    			printf("Name:%s的内存被释放!\n", person[i]->name);
    			free(person[i]->name);
    			person[i]->name = NULL;
    		}
    
    		
    		free(person[i]);
    		person[i] = NULL;
    	}
    
    	free(person);
    	person = NULL;
    }
    
    void test()
    {
    	struct Person **person = NULL;
    	person = allocateSpace();
    	printPerson(person);
    	freeSpace(person);
    	person = NULL;
    }
    
    int main(){
    
    	test();
    
    	system("pause");
    	return EXIT_SUCCESS;
    }
    

    其他

    c语言——结构体嵌套二级指针

    展开全文
  • 结构体嵌套二级指针的使用 Note: 对于结构体嵌套二级指针,务必注意在开辟结构体空间后对于结构体内部指针的操控。 以及对结构体内部指针数组(二级指针)指向的指针空间进行开辟空间。 再有就是对于手动开辟的空间...
  • #include #define LEN 20 const char *mgs[5]= { "qqqq","wwww","EEEEEEE","RRRR","TTTTT" }; struct apple { char smell[LEN]; char taste[LEN]; }; struct fruit { struct apple greenapple;...char v
  • C语言笔记—结构体21.... 结构体嵌套5. 使用结构体 1. 结构体操作 1.1 取地址 struct Point3D{ int x; int y; int z; }; struct Point3D p = {1,2,3}; printf("&p = %p\n",&p); print...
  • C语言结构体.ppt

    2011-04-09 08:55:49
    定义结构体类型 定义结构体类型变量 引用结构体变量 给结构体变量赋值 结构体的嵌套 结构体数组 指向结构体类型变量的指针
  • PStruct 字节序列化框架,用于java类与C语言struct结构体互转 支持数组声明 支持结构体嵌套 避免使用反射,只有一处newInstance()调用默认构造方法涉及了反射,性能很高。
  • (声明多种类型)(结构体中可以嵌套结构体 ) struct students { char name[20]; unsigned int age; char tel[16]; float scores[3]; char sex; } 这一步没有让计算机分配空间,它告诉编译器如何表示...
  • * 参考借鉴 | 实用可编辑 参考借鉴 | 实用可编辑 * 参考借鉴 | 实用可编辑 参考...* 精品PPT | 实用可编辑 本章要点 什么是结构结构与数组有什么差别 有几种结构的定义形式它们之间有什么不同 什么是结构的嵌套 什么是
  • C语言的简单基本实例,包括循环、嵌套数组、指针、函数、结构体等内容。
  • 一、结构体的相关知识: 1、定义结构体类型,只说明...3、结构体定义中可以包含另外的结构体,即结构体是一嵌套的。 4、结构体变量可以在定义时进行初始化赋值。 例如:struct person{ char name[20]; char se...
  • (四)C语言结构体

    2019-03-06 18:23:56
    目录(四)C语言之结构体一、什么...3、第三种写法:匿名结构体,控制结构体变量的个数(限量版),相当于单例四、结构体嵌套1、分别定义结构体嵌套2、结构体内定义结构体嵌套五、结构体与指针六、结构体数组与指针七...
  • 来源:公众号“TechZone”,作者:HarrisWilde「本文目录」结构体的声明与定义声明定义访问结构体成员初始化结构体对齐结构体嵌套结构体数组结构体指针传递结构体信息传递结构体...
  • C语言结构体

    2021-05-26 22:37:28
    目录结构体类型结构体类型声明定义结构体变量用 typedef 给数据类型定义一个别名结构体变量初始化结构体数组嵌套嵌套结构体 结构体类型 结构体类型声明 C语言允许用户自定义数据类型,即通过结构体数组: ...
  • 清华大学黄维通设计制作 PAGE # 清华大学黄维通设计制作 清华大学黄维通设计制作 PAGE # 第8章结构体联合体和枚举 本章主要内容 结构体的说明和定义 结构体成员的引用与结构体变量的初始化 结构体数组 结构体指针 ...
  • 结构体定义2.1 tag-nam、member-listt和variable-list必须同时存在两个2.2 结构体嵌套2.3 初始化结构体成员列表2.3.1 花括号“{}”的初始化列表2.3.2 指定初始化器2.3.3 初始化嵌套结构体2.3.4 结构体变量赋值...
  • C语言 - 结构体初识

    多人点赞 2021-05-15 11:41:04
    文章目录前言一、什么是结构体二、结构体创建和初始化1、结构体的创建2、结构体成员嵌套3、结构体初始化三、结构体成员访问四、函数(结构体)传参1、结构体传值和传址2、比较函数(结构体)传值和传址五、拓展1、栈的...
  • 20201130-C语言-结构体

    2020-12-16 13:03:38
    再定义结构体变量数组 再定义指针指向变量 将结构体变量,数组,指针作用为函数的参数 结构作为函数的参数 有利于数据的封装 有利于接口的标准化 结构体用法 不能将一个结构体变量作为一个整体输入输出...
  • 结构体嵌套一级指针 结构体嵌套二级指针 结构体作为函数参数 结构体深拷贝、浅拷贝 结构体的类型和定义结构体是一种数据类型,用 struct 关键字来修饰,定义一个结构体可以这样: 1 2 3 4 5 struct Teacher { ...
  • 结构体变量的定义和初始化、结构体数组结构体数组和结构体的大小、结构体数组排序、开辟堆空间存储结构体、结构体嵌套结构体、结构体的赋值、结构体和指针、结构体做函数参数、共用体、枚举
  • 1.结构体表示 结构体文本是结构体通过常量成员表达式的赋值方式或者表达式。...下面是一个结构体数组初始化的例子: ab abarr[1:0] = '{'{1,1,0},'{2,2.0}}; 结构体还可以使用成员名赋值,或者数据..
  • 第十二章;12.2结构体的定义;例struct student {int num; char name[20]; char sex; int age; float score; char addr[30]; };结构体变量的定义;结构体变量的定义;...结构体数组的初始化赋值;12.4结构体指针变
  • 3.输入10个学生的信息(包括学号、姓名、性别、年龄、成绩)组成结构体数组,分别统计男、女人数,计算全体学生的平均年龄、平均成绩,并将高于平均成绩的学生信息输出 思路: 使用两个结构体stuinf、cnt1分别存储...
  • c语言基础-结构体

    2015-01-21 20:57:21
    当然结构体里面可以嵌套数组结构体 结构体的定义 struct 结构体名 { 成员变量的数据类型1 成员变量名1; 成员变量的数据类型2 成员变量名2; ....... }; //注意 结构体的命名用驼峰法 每一个成员变量后面...
  • 有的时候,我们所遇到的数据结构,不仅仅是一群数字或者是 字符串那么简单。比如我们每一个人的学籍信息,学号是一个 ...相比于数组结构体有以下的更强大的优势: 批量存储数据 存储不同类型的数据 支持嵌套
  • C语言基础》 之 第10章 结构体

    千人学习 2019-01-08 16:48:47
    课程内容:为什么需要结构体、定义一个结构体类型、结构体变量的声明和定义、sizeof测试结构体变量字节、结构体成员的普通访问方式、使用指针访问结构体成员、结构体嵌套、结构体传参、结构体数组
  • 第十二章;12.2结构体的定义;例struct student {int num; char name[20]; char sex; int age; float score; char addr[30]; };结构体变量的定义;结构体变量的定义;...结构体数组的初始化赋值;12.4结构体指针变

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 149
精华内容 59
关键字:

c语言结构体嵌套结构体数组

c语言 订阅