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

# 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

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



链表

最新文章

  1. 深入理解Java虚拟机之读书笔记四 性能监控与故障处理工具
  2. web form 基础知识初整理
  3. ha456.jar打开dump文件报Unsupported major.minor version 51.0异常
  4. python使用xlrd模块读写Excel文件的方法
  5. 2014年GCT考试报名时
  6. 使用South时候由于两个相同id的文件引起的问题
  7. 汉字与utf8相互转化
  8. Rescue(bfs)
  9. DARK的锁链
  10. jq龙禧轮播图
  11. ACM在线模板
  12. CNN:Channel与Core的高H、宽W的权值理解
  13. SQL内外连
  14. Linux下统计局域网流量
  15. 会动的文字Marquee应用(转)
  16. 04: 使用BeautifulSoup封装的xss过滤模块
  17. java多线程 -- ConcurrentHashMap 锁分段 机制
  18. ASP.NET 加入返回参数ReturnValue
  19. Map 和 WeakMap 数据结构
  20. 快速部署简单私有云CloudStack(上)

热门文章

  1. [TypeScript] Distinguishing between types of Strings in TypeScript
  2. Android系统开发(8)——linx进程基本概念
  3. Java程序猿必知的10个调试技巧
  4. [Python学习] 简单爬取CSDN下载资源信息
  5. jquery插件课程2 放大镜、多文件上传和在线编辑器插件如何使用
  6. ssion机制详解
  7. IE浏览器下css hack
  8. SRA解密报错:Data must start with zero
  9. C++ 如何快速清空vector以及释放vector内存?
  10. python property属性