码迷,mamicode.com
首页 > 编程语言 > 详细

C语言--结构体

时间:2015-01-22 13:05:14      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

一、结构体

1.结构体变量的定义

 * 结构体可以由多个不同类型的数据构成

 * struct Person {int age; double height; char *name}; //先定义结构体类型,该结构体  有三个成员或者属性

 * struct Person p = {18, 1.80, "jack"}; //再根据结构体类型定义变量,并进行初始化

2.结构体变量属性的赋值

 1>变量属性赋值1

 struct Person p = {18, 1.80, "jack"};

 //属性的修改

 p.age = 20;

 p.height = 1.78;

 p.name = "rose";

 p = {19, 1.77, "jame"};// 错误赋值方式,只能在定义变量是进行初始化

 2> 结构体变量赋值2

 struct Person p2 = {.age =19 ; .height =176 ; .name ="tom" };

3.结构体内存分析

 1> struct Date {int year ;int month; int day} ;//本行代码只是定义了一个结构体类型,并  未分配存储空间

 2> struct Date d1 = {2011,4,10};//定义结构体变量(真正分配存储空间),结构体变量的存  储空间就是它所有变量的和--12个字节,可以用sizeof(d)检测

 3> struct Student {int age; char *name};

  struct  Student stu = {18, "jary"};// 此时结构体变量占用16个字节。因为当结构体变  量是不同类型的数据时,存储空间为最大类型数据字节的倍数

4.结构体变量的多种定义方式

 1> struct Person {int age; double height; char *name};

  struct Person p = {18, 1.80, "jack"};

 2> struct Person {int age; double height; char *name} p1;//定义结构体的同时定义了  变量

  struct Person {int age; double height; char *name} p2;//错误写法,结构体类型重  复定义

 3> struct {int age; double height; char *name} p3;//缺点:不能重复定义变量

5.结构体作用域

 * 结构体类型也有作用域,从定义类型的那一行开始,一直到代码块结束

 * 可以对比全局变量和局部变量,进行定义和使用

6.结构体数组

 1>结构体数组定义

  struct Person {int age; double height; char *name};

  struct Person names[3] = { {18, 1.80, "jack"},  {18, 1.80, "jame"},  {18, 1.80, "tom"}};

7.指向结构体的指针

 1> 指针的定义

   struct Person {int age; double height; char *name};//定义类型

  struct Person p1 = {18, 1.80, "jack"};//定义结构体变量

  struct Person *p; //定义了struct Person类型的指针

  p = &p1;//指针变量p指向了p1变量

 2> 访问结构体变量属性的方式

 ① p1.age; p1.height;p1.name; //利用变量名直接访问

 ② (*p).age; (*p).height; (*p).name; //利用指针访问

 ③ p->age; p->height; p->name; //利用指针箭头

8.结构体嵌套

 1> struct Date {int year ;int month; int day};

  struct Student {int age; double height; struct Date birthday};//结构体嵌套定义

  struct Student stu = {18,188,{1996,9,9}};

二、数据类型总结

1.基本数据类型

 1> int

 ①long int、long:8个字节 %ld

 ②short int、short:2个字节 %d、 %i

 ③unsigned int、unsigned:4个字节%d、%i

 ④signed int、signed:4个字节%d、%i

 2> float/double

 ①float:4个字节 %f

 ②double:8个字节 %f

 3>char

 ①1个字节 %c、%d

 ②char类型保存在内存中的是它的ASCII值;‘A‘-->65

2.构造类型

 1>数组:只能存储同一种类型的数据

  定义:数据类型 数组名[元素个数]

 2>结构体:可以由多个不同的类型数据组成

  定义:先定义类型 再利用类型定义变量

3.指针类型

 1> 变量的定义:int *p;

 2> 间接操作变量的值,int a = 10;int *p;p = &a;*p = 20;

4.枚举类型

 1> 使用场合:当一个变量的取值,只有几个固定取值时

C语言--结构体

标签:

原文地址:http://www.cnblogs.com/smqh/p/4241121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!