精华内容
下载资源
问答
  • 如果对结构体变量的使用不太熟悉,可以先看看博主的这篇文章【C语言】结构体变量定义、初始化、使用 一、定义 1 先声明结构体类型、定义结构体变量: //声明结构体类型 struct students { char name[20]; ...

    前言

    如果对结构体变量的使用不太熟悉,可以先看看博主的这篇文章【C语言】结构体变量定义、初始化、使用

     

    一、定义

    1  先声明结构体类型、定义结构体变量:

    //声明结构体类型
    struct students
    {
    	char name[20];
    	int age;
    };
        
    //定义并初始化结构体变量
    struct students stu1={"Allen",18};

    2  定义并初始化指向结构体变量的指针

    //定义指向结构体变量的指针
    struct  students *pstu;
    pstu=&stu1;

    *3  测试字节数

    //测试字节数
    int sizeofpstu=sizeof(pstu);
    printf("指针 pstu 的字节数为:%d\n\n",sizeofpstu);//指针的 size 是 4 
    printf("指针指向的结构体变量 stu1 的字节数为:%d\n\n",sizeof(*pstu));// pstu 指向的内容 stu1 的 size 是 20 + 4 = 24

     

    二、通过指针引用结构体变量

    //通过结构体指针访问结构体变量
    printf("姓名    年龄\n\n");
    printf("%s    %d\n\n",pstu->name,pstu->age);

    与以下代码等价:

    printf("%s    %d\n\n",stu1.name,stu1.age);

     

    附录

    完整测试代码如下:

    #include <stdio.h>
    #include <string.h>
    #define P printf
    
    int main()
    {
    	//声明结构体类型
    	struct students
    	{
    		char name[20];
    		int age;
    	};
        
        //定义并初始化结构体变量
    	struct students stu1={"Allen",18};
    
    	//定义指向结构体变量的指针
    	struct  students *pstu;
    	pstu=&stu1;
    
    	//测试字节数
    	int sizeofpstu=sizeof(pstu);
    	P("指针 pstu 的字节数为:%d\n\n",sizeofpstu);//指针的 size 是 4 
    	P("指针指向的结构体变量 stu1 的字节数为:%d\n\n",sizeof(*pstu));// pstu 指向的内容 stu1 的 size 是 20 + 4 = 24
     
    	//通过结构体指针访问结构体变量
    	P("姓名    年龄\n\n");
    	P("%s    %d\n\n",pstu->name,pstu->age);
    
    	//与以下等价
    	P("%s    %d\n\n",stu1.name,stu1.age);
    	
    
    
    	return 0;
    }

    结果如下:

     

     

    展开全文
  • 如果对结构体变量的使用不太熟悉,可以先看看博主的这篇文章【C语言】结构体变量定义、初始化、使用。 首先声明结构体类型,注意,若要跨函数使用结构体,结构体类型的声明必须在函数外部: struct students { ...

    前言

    如果对结构体变量的使用不太熟悉,可以先看看博主的这篇文章【C语言】结构体变量定义、初始化、使用

     

    首先声明结构体类型,注意,若要跨函数使用结构体,结构体类型的声明必须在函数外部:

    struct students
    {
    	char name[20];
    	int age;
    };

    然后初始化结构体变量及指向结构体变量的指针:

    struct students stu1={"Allen",18},*pstu;
    pstu=&stu1;

     

    方法 1  结构体变量作为参数

    函数体:

    // 1 用结构体变量作函数参数
    void printStu(struct students stu)
    {
    	printf("%s    %d\n\n",stu.name,stu.age);
    }

     

    方法 2  结构体变量的成员作参数

    函数体:

    // 2 用结构体变量的成员作函数参数
    void printStu2(char name[20],int age)
    {
    	printf("%s    %d\n\n",name,age);
    }

     

    方法 3  用指向结构体变量(或结构体数组)的指针作为参数

    函数体:

    // 3 用指向结构体变量(或结构体数组)的指针作为参数
    void printStu3(struct students *pstu)
    {
    	printf("%s    %d\n\n",pstu->name,pstu->age);
    }

     

    附录

    完整测试代码如下:

    #include <stdio.h>
    #include <string.h>
    
    //声明结构体类型(若要跨函数使用,必须定义在外部)
    struct students
    {
    	char name[20];
    	int age;
    };
    
    int main()
    {
        //定义并初始化结构体变量及指针
    	struct students stu1={"Allen",18},*pstu;
    	pstu=&stu1;
    
    	//函数声明
    	void printStu(struct students);
    	void printStu2(char [20],int);
    	void printStu3(struct students *);
    
    	//调用
    	printf("姓名    年龄\n\n");
    	printStu(stu1);
    	printStu2(stu1.name,stu1.age);
    	printStu3(pstu);
    	return 0;
    }
    
    //函数定义
    
    // 1 用结构体变量作函数参数
    void printStu(struct students stu)
    {
    	printf("%s    %d\n\n",stu.name,stu.age);
    }
    
    // 2 用结构体变量的成员作函数参数
    void printStu2(char name[20],int age)
    {
    	printf("%s    %d\n\n",name,age);
    }
    
    // 3 用指向结构体变量(或结构体数组)的指针作为参数
    void printStu3(struct students *pstu)
    {
    	printf("%s    %d\n\n",pstu->name,pstu->age);
    }

    结果:

    展开全文
  • 【C语言】结构体变量的初始化方法

    千次阅读 2019-07-07 17:08:03
    1.定义结构体变量并同时其初始化 这里介绍三种方法: 顺序法 乱序法 C++风格的乱序 struct student { int score; const char *name; } 1.1 顺序法 按照结构体成员的声明顺序进行初始化。 struct student stu1...

    结构体变量的初始化方法

    1.定义结构体变量并同时对其初始化

    这里介绍三种方法:

    1. 顺序法
    2. 乱序法
    3. C++风格的乱序
    struct student
    {
    	int score;
    	const char *name;
    }
    

    1.1 顺序法

    按照结构体成员的声明顺序进行初始化。

    struct student stu1={98,"li ming"};
    

    1.2 乱序法

    特点:成员顺序可以不定,Linux 内核多采用此方式。推荐使用这种初始化方法!

    struct student stu1=
    {
    	.name="li ming",
    	.score=89,
    };
    

    1.3 C++风格的乱序

    struct student stu1=
    {
    	name:"li ming",
    	score:89,
    };
    

    2.先定义结构体变量,再对其初始化

    struct student stu1;
    stu1.score=90;
    stu1.name="li ming";
    
    展开全文
  • 要求使用指针类型的变量进行结构体变量的定义。 解题思路:采用 malloc 函数进行结构体指针变量的定义,并使用 --> 访问成员变量的方式进行结构体变量赋值;比较两个结构体信息中学生的成绩成员变量的大小,按照...
  • 指向结构体类型变量的使用 首先让我们定义结构体: struct stu { char name[20]; ...再定义指向结构体类型变量的指针变量: ...struct stu *p1, *p2 ;...定义指针变量p 1、p 2,分别...[例7-2] 指向结构体类型变量的正确使
    指向结构体类型变量的使用
    首先让我们定义结构体:
    struct stu
    {
    char name[20];
    long number;
    float score[4];
    } ;
    再定义指向结构体类型变量的指针变量:
    struct stu *p1, *p2 ;
    定义指针变量p 1、p 2,分别指向结构体类型变量。引用形式为:指针变量→成员;
    [例7-2] 对指向结构体类型变量的正确使用。输入一个结构体类型变量的成员,并输出。
    #include <stdlib.h> /*使用m a l l o c ( ) 需要* /
    struct data / *定义结构体* /
    {
    int day,month,year;
    } ;
    struct stu /*定义结构体* /
    {
    char name[20];
    long num;
    struct data birthday; /嵌*套的结构体类型成员*/
    } ;
    main() /*定义m a i n ( ) 函数* /
    {
    struct stu *student; 定/*义结构体类型指针*/
    student=malloc(sizeof(struct stu)); 为/指* 针变量分配安全的地址*/
    printf("Input name,number,year,month,day:/n");
    scanf("%s",student->name); 输/*入学生姓名、学号、出生年月日*/
    scanf("%ld",&student->num);
    scanf("%d%d%d",&student->birthday.year,&student->birthday.month,
    & student->birthday.day);
    printf("/nOutputname,number,year,month,day/n");
    /*打印输出各成员项的值*/
    printf("%20s%10ld%10d//%d//%d/n",student->name,student->num,
    student->birthday.year,student->birthday.month,
    student->birthday.day);
    }
    程序中使用结构体类型指针引用结构体变量的成员,需要通过C提供的函数malloc()来为
    指针分配安全的地址。函数sizeof()返回值是计算给定数据类型所占内存的字节数。指针所指
    各成员形式为:
    student->name
    student->num
    student->birthday.year
    student->birthday.month
    student->birthday.day




    指向结构体类型数组的指针的使用
    定义一个结构体类型数组,其数组名是数组的首地址,这一点前面的课程介绍得很清楚。
    定义结构体类型的指针,既可以指向数组的元素,也可以指向数组,在使用时要加以区分。
    [例7-3] 在例7 - 2中定义了结构体类型,根据此类型再定义结构体数组及指向结构体类型的指针。
    struct data
    {
    intday,month,year;
    };
    struct stu/*定义结构体*/
    {
    char name[20];
    long num;
    struct data birthday;/嵌*套的结构体类型成员*/
    };
    struct stustudent[4],*p;定/*义结构体数组及指向结构体类型的指针*/
    作p=student,此时指针p就指向了结构体数组student。
    p是指向一维结构体数组的指针,对数组元素的引用可采用三种方法。
    1)地址法
    student+i和p+i均表示数组第i个元素的地址,数组元素各成员的引用形式为:
    (student+i)->name、(student+i)->num和(p+i)->name、(p+i)->num等。student+i和p+i
    与&student[i]意义相同。
    2)指针法
    若p指向数组的某一个元素,则p++就指向其后续元素。
    3)指针的数组表示法
    若p=student,我们说指针p指向数组student,p[i]表示数组的第i个元素,其效果与
    student[i]等同。对数组成员的引用描述为:p[i].name、p[i].num等。
    [例7-4]指向结构体数组的指针变量的使用。
    structdata/*定义结构体类型*/
    {
    intday,month,year;
    };
    structstu/*定义结构体类型*/
    {
    char name[20];
    long num;
    struct data birthday;
    };
    main()
    {inti;
    structstu*p,student[4]={{"liying",1,1978,5,23},{"wangping",2,1979,3,14},
    {"libo",3,1980,5,6},{"xuyan",4,1980,4,21}};
    /*定义结构体数组并初始化*/
    p=student;/*将数组的首地址赋值给指针p,p指向了一维数组student*/
    printf("/n1----Outputname,number,year,month,day/n");
    for(i=0;i<4;i++)/*采用指针法输出数组元素的各成员*/
    printf("%20s%10ld%10d//%d//%d/n",(p+i)->name,(p+i)->num,
    (p+i)->birthday.year,(p+i)->birthday.month,
    (p+i)->birthday.day);
    }

    展开全文
  • 那么我们还是跟上一章的例子来看看怎么给结构体student的结构体变量stu1来初始化。· 第一种方法我们在定义变量的时候进行初始化这种方法简单明了,如果内部有嵌套的结构体,就用大括号括起来就行· 那么...
  • 结构体变量名.成员名 指针变量名->成员名 (*指针变量名).成员名(注意:*不能省略因.的结合性大于*) #include <iostream> using namespace std; struct student1 { int Code; char Name[20]; ...
  • 第十一章 结构体与共用体 问题与思考 下面程序的运行结果是 . main) { struct cmplx{int x; int y;... } 0 b)1 c)3 d)6 以下对结构体变量 stu1 中成员 age 的非法引用是 b . struct student {int ag
  • //写在前面(自己基础不够扎实,写给自己) struct{ char name[10]; int number;...stu1为结构体变量,这里的指针p指向一个结构体变量,其值是结构体变量stu1的起始地址。对结构体变量成员的引用,
  • struct stu{ char name[20]; int age; }; ...1、直接整个结构体进行初始化: ...struct stu xiaoming = {"xiaoming",10};...3、通过另一结构体变量直接初始化 struct stu xiaowang= {"xiaowang",10}..
  • 8. 结构体

    2021-02-02 23:07:51
    定义结构体变量的方式: 先声明结构体类型再定义变量名 在声明类型的同时定义变量 直接定义结构体类型变量(无类型名) 结构体类型和结构体变量关系: 结构体类型:指定了一个结构体类型,它相当于一个...
  • 将一个结构体变量中的数据传递给另一个函数,有下列3种方法:  1.用结构体变量名作参数。...例7.5 有一个结构体变量stu,内含学生学号、姓名和3门课的成绩。要求在main函数中为各成员赋值,在另一函数print
  • //定义student结构体变量stu; //定义循环变量i //遍历数组,每一个编号变量进行匹配 for i=0 to N-1 stu=*std//把std的值赋给stu结构体变量 if stu.num==num //跳出循环 std++; end i if i...
  • 结构体指针

    2017-04-13 21:18:27
    指向结构体类型变量的使用 首先让我们定义结构体: struct stu { char name[20]; ...再定义指向结构体类型变量的指针变量: ...struct stu *p1, *p2 ;...定义指针变量p 1、p 2,分别...[例7-2] 指向结构体类型变量的正确使
  • 结构体指针概要

    2014-10-14 09:36:20
    结构体指针指针当做函数参数数组当做函数参数1.结构体指针指向结构体变量的指针.称为结构体指针Student stu ={0};Student *p = &stu;Student * 结构体指针类型(类型), p结构体...(*p)指针取值后是结构体变量...
  • 结构体指针主讲内容

    2014-07-29 13:42:47
    结构体指针 指针当做函数参数 数组当做函数参数 1.结构体指针 指向结构体变量的指针....Student stu ={0};...Student *p = &stu;...Student * 结构体指针类型(类型), p结构体指针变量(变量名...(*p)指针取值后是结构体变量
  • 在学习结构体之前,我们所认知的数据类型只有整型, ...1,声明一个结构体类型 2,创建一个tag类型,并用其去创建学生对象(变量) 3,描述学生的属性,性别,名字 类如 struct stu { char name
  • 访问成员:学会之后可以...struct Stu stu1;//实例变量就是定义的这种普遍变量,这个和int a是一样的意思,a就是一个实例变量 int * p=&a; p就是一个指针变量 struct Stu *p=(struct Stu *)malloc(sizeo...
  • 此时可以直接用Stu stu1创建一个变量,如果没有typedef则声明变量需要 struct Student stu1 声明变量。 c++中 可以直接用结构体名声明变量,不用typedef。 但是如果用了typedef则又有不同,Stu会从一个变量变成...
  • 对于联合和结构体我主要从三个方面去认识: 1,结构体的声明和联合的声明是一样的,仅仅只是关键字的不同,一个是struct一个是union; 2,结构体和联合体的访问,结构体中...我们可以单独对结构体中所有变量访问,stu
  • 以下对结构体变量stu1中成员age的非法引用是 struct student { int age; int num; }stu1, *p; 正确答案: B. student.age 问题 2 得 10...
  • 1.定义结构体数组和定义结构体变量类似,定义结构体数组时只需声明其为数组即可。如:struct Student{int num;char name[20];char sex[5];int age;float score;char addr[30];};Student stu[3]; //定义Student类型的...
  • C 和C++ 定义结构体的区别

    千次阅读 2017-03-15 11:18:26
    第三篇:struct和typedef struct 分三块来讲述: 1 首先: ...于是在声明变量的时候就可:Stu stu1; 如果没有typedef就必须用struct Student stu1;来声明 这里的Stu实际上就是struct Student
  • 定义指针变量p 1、p 2,分别指向结构体类型变量。引用形式为:指针变量→成员;[例7-2] 指向结构体类型变量的正确使用。输入一个结构体类型变量的成员,并输出。 代码如下:#include <stdlib> /*使用m a l l o c ( ...
  • 指向结构体类型变量的使用 首先让我们定义结构体: struct stu { char name[20]; ...再定义指向结构体类型变量的指针变量: ...struct stu *p1, *p2 ;...定义指针变量p 1、p 2,分别...[例7-2] 指向结构体类型变量的正确使
  • 结构体类型的创建 ...1.声明类型的同时对结构体变量进行定义 struct Stu { char name[20]; int age; char sex[5]; char id[20]; }stu; 2.先声明结构体类型,再对变量进行定义 struct St...
  • 指向结构体类型变量的使用首先让我们定义结构体:...定义指针变量p 1、p 2,分别指向结构体类型变量。引用形式为:指针变量→成员;[例7-2] 指向结构体类型变量的正确使用。输入一个结构体类型变量的成员,并输出。#

空空如也

空空如也

1 2 3 4
收藏数 73
精华内容 29
关键字:

对结构体变量stu1