------------------------------------------------------------------

# include <stdio.h>

struct Student{  //Student可以看成一种数据类型

int age;

float score;

char sex;

};

int main(void){

struct Student st = {80,66.6,'F'};





return 0;

}

------------------------------------------------------------------

一、为什么需要结构体?

为了表示一些复杂的事物,而普通类型无法满足实际需求

二、什么叫结构体?

把一些基本类型组合在一起形成的一个新的复合数据类型叫做结构体。

三、如何定义一个结构体?

第一种方式

struct Student{  

int age;

float score;

char sex;

};

第二种方式

struct Student2{

int age;

float score;

char sex;

} str2;

第三种方式

strut {

int age;

float score;

char sex;

} str3;

四、怎么去使用结构体变量

1.赋值和初始化

 定义的同时可以整体赋初值

 如果定义完后,则只能单个的赋初值

--------------------------------------------------------------------

# include <stdio.h>





struct Student

{

int age;

float score;

char sex;

}

int main(void){

struct Student st = {80, 66.6, 'F'};  //整体赋值

struct Student st2;  //单个赋值

st2.age = 10;

st2.score = 88;

st2.sex = 'F';



printf("%d %f %c\n", st.age, st.score, st.sex);  //第一种取值方式

printf("%d %f %c\n", st2.age, st2.score, st2.sex);



return 0;

}

--------------------------------------------------------------------



2.如何取出结构体变量中的每一个成员

1.结构体变量名.成员名

2.指针变量->成员名

-------------------------------------------------------------------------

# include <stdio.h>





struct Student

{

int age;

float score;

char sex;

};

int main(void){

struct Student st = {40, 60, 'F'};

struct Student * pst = &st;





pst->age = 68;

st.score = 66;

printf("%d %f\n", st.age, pst->score);



return 0;

}

-------------------------------------------------------------------------


pst->age在计算机内部会被转化成(*pst).age

3.结构体变量的运算

结构体变量不能相加,不能相减,也不能相互乘除但结构体变量可以相互赋值

--------------------------------------------------------------------------

struct Student

{

int age;

char sex;

char name[100];

};  //分号不能省略

struct Student st1, st2;

st1+st2  st1*st2  st1/st2 都是错误的

st1 = st2  或者 st2 = st1 都是正确的

---------------------------------------------------------------------------

4.结构体变量和结构变量指针作为函数参数传递的问题

推荐使用结构体指针变量作为函数参数来传递

-------------------------------------------------------------------------

# include <stdio.h>





struct Student

{

int age;

float score;

char sex;

};





int main(void){

struct Student st;



InputStudent(&st);  //对结构体变量输入

OutputStudent(&st);  //对结构体变量输出



return 0;

}

void OutputStream(struct Student * ss){

printf("%d %c %s\n", ss->age, ss->sex, ss->name);

}

void InputStudent(struct Student * pstu){ //pstu只占4个字节

(*pstu).age  = 10;

strcpy(pstu->name, "zhangsan");

pstu->sex = 'F';

}

---------------------------------------------------------------------------

5.动态的构造存放学生信息的结构体数组

---------------------------------------------------------------------------

/*

2012年2月5日19:43:24

*/

# include <stdio.h>

# include <malloc.h>





struct Student

{

int age;

float score;

char name[100];

};

int main(void){

int len;

struct Student * pArr;

int i;



printf("请输入学生的个数:\n");

printf("len = ");

scanf("%d", &len);

pArr = (struct Student *)malloc(len * sizeof(struct Student));





for (i=0; i<len; ++i){

printf("请输入第%d个学生的信息\n", i+1);

printf("age = ");

scanf("%d", &pArr[i].age);





printf("name =");

scanf("%s", pArr[i].name);





printf("score = ");

scanf("%f", &pArr[i].score);

}

//输出

printf("\n\n\n");

for (i=0; i<len; ++i){

printf("第%d个学生的信息是\n", i+1);

printf("age = %d\n", pArr[i].age);





printf("name = %s\n", pArr[i].name);





printf("score = %f\n\n", pArr[i].score);

}



return 0;

}

输出结果:

请输入学生的个数:

len = 3

请输入第1个学生的信息

age = 22

name =李小强

score = 99

请输入第2个学生的信息

age = 23

name =杨鹏

score = 89

请输入第3个学生的信息

age = 24

name =王海涛

score = 88













第1个学生的信息是

age = 22

name = 李小强

score = 99.000000





第2个学生的信息是

age = 23

name = 杨鹏

score = 89.000000





第3个学生的信息是

age = 24

name = 王海涛

score = 88.000000

---------------------------------------------------------------------------



链表

c语言学习笔记(10)——结构体的更多相关文章

  1. c语言学习笔记之结构体存储

    今天讲讲结构体存储问题 首先,结构体简单说是对不同类型的封装,一开始我们可能会想结构体在内存中的存储的大小是直接元素的和 例如 我们可能会觉得是 结构体大小=int(4个字节)+ short(2个字节 ...

  2. C语言学习笔记--枚举&结构体

    枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...

  3. C语言学习笔记10-结构体、枚举、联合体

    C语言学习笔记10-结构体.枚举.联合体    待传

  4. C#学习笔记之结构体

    1.概述 结构是一种与类相似的数据类型,不过它较类更为轻量,一般适用于表示类似Point.Rectangle.Color的对象.基本上结构能办到的类全都能办到,但在某些情况下使用结构更为合适,后面会有 ...

  5. 《PHP7底层设计与源码实现》学习笔记2——结构体对齐

    书里给了一段代码,假如有个结构体如下: struct test {     char a;     int b;     long c;     void* d;     int e;     cha ...

  6. contiki学习笔记---process结构体

    process,字面意义,进程,看看它的结构 struct process { struct process *next; #if PROCESS_CONF_NO_PROCESS_NAMES #def ...

  7. Go语言学习笔记(10)——错误处理示例

    // 定义一个 DivideError 结构 type DivideError struct { dividee int divider int } // 实现 `error` 接口 func (de ...

  8. 【C#学习笔记】结构体使用

    using System; namespace ConsoleApplication { struct _st { public string name; public int age; } clas ...

  9. Go语言学习笔记十: 结构体

    Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...

  10. GO语言学习笔记(一)

    GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...

随机推荐

  1. 实现indexOf

    1.先判断Array数组是否含有indexOf方法,如果有直接返回结果:如果没有则利用循环比较得到结果. function indexOf(arr, item) { if(Array.prototyp ...

  2. 【例题 6-1 UVA - 210】Concurrency Simulator

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 队列模拟题. 注意初始化.. 然后题目中是让读入一个数据组数然后再输入数据的. 但样例..但样例没有!? [代码] #include ...

  3. PatentTips - Transitioning between virtual machine monitor domains in a virtual machine environment

    BACKGROUND The present disclosure relates generally to microprocessor systems, and more specifically ...

  4. IOS RGB颜色转换

    - (UIColor *)getColor:(NSString *)hexColor { unsigned int red,green,blue; NSRange range; range.lengt ...

  5. Win7下多线程中OpenFileDialog和SaveFileDialog失效的解决办法(转载)

    在程序中,通常会使用独立线程来操作OpenFileDialog或者SaveFileDialog控件,但是在某些情况下(Win7系统下)调用 ShowDialog方法并不显示选择路径对话框.此时需要对启 ...

  6. Your algorithm's runtime complexity must be in the order of O(log n).

    Given a sorted array of integers, find the starting and ending position of a given target value. You ...

  7. 认识PWA

    原文 简书原文:https://www.jianshu.com/p/f38f21ed45dc 大纲 前言 1.什么是PWA 2.PWA 应该具备的特点 3.PWA基础 4.构建 PWA 的业务场景 5 ...

  8. [Recompose] Render Nothing in Place of a Component using Recompose

    Learn how to use the ‘branch’ and ‘renderNothing’ higher-ordercomponents to render nothing when a ce ...

  9. [Angular] Zones and NgZone

    NgZone, Angular uses it to profiling all the async actions such as setTimeout, http request and anim ...

  10. 菜单之二:使用xml文件定义菜单 分类: H1_ANDROID 2013-11-03 09:39 1038人阅读 评论(0) 收藏

    参考<疯狂android讲义>2.10节 P174,参见归档project:XmlMenuDemo.zip 一般推荐使用XML文件定义菜单. 基本步骤如下: 1.定义布局文件 为简单显示原 ...