A. 基本知识

 
与数组的对比
数组:
构造类型
只能有多个相同类型的数据构成
 
结构体:
结构体类型
可以由多个不同类型的数据构成
 
1. 定义类型
     struct Student
{
int age;
char *name;
float height;
};
 
2. 定义结构体变量
定义变量的多种方式
a.
     //define a struct variable
struct Student stu = {, "simon", 1.65f};
 
b.
     struct Student {
int age;
char *name;
float height;
} stu = {, "simon", 1.65f};
 
     /*错误写法
struct Student p;
p = {17, "Tom"};
*/
c.

     struct Student p;
p.age = ;
p.name = "Tom”;
d.

     struct Student p2 = {, "Sam”};
e.

     struct Student p3 = {.name="Judy", .age= };
f.匿名
     struct
{
int age;
char *name;
} stu3;
 
3. 不允许结构体进行递归定义
在结构体构造代码内定义本结构体的变量
 
4. 可以包含其他的结构体
 void test1()
{
struct Date
{
int year;
int month;
int day;
}; struct Student
{
int age;
struct Date birthday;
}; struct Student stu = {, {, , }}; printf("my birthday ==> %d-%d-%d\n", stu.birthday.year, stu.birthday.month, stu.birthday.day);
}
 
5. 结构体数组
     struct Student
{
int age;
char *name;
float height;
} stus[];
 
匿名
     struct
{
int age;
char *name;
float height;
} stus[];
 
6. 结构体作为函数参数, 传递的仅仅是成员的值
 
7. 指向结构体的指针
 void test4()
{
struct Person p = {, "ss"};
struct Person *pointer; pointer = &p; printf("test4: person's age = %d\n", p.age);//It's p!!!, not pointer!!
printf("test4: person's age = %d\n", (*pointer).age);
printf("test4: person's age = %d\n", pointer->age);
}
 
==> 3种方式访问结构体成员变量
a. struct.v
b. (*pointer).v
c. pointer->v
 
8.结构体内存分配
a.定义的时候不会分配存储空间
b.定义结构体变量的时候分配空间,分配的空间大小是最大成员变量的倍数
 
 
9.结构体复制
     struct Student p2 = {, "Sam"};
struct Student p3 = {.name="Judy", .age= };
p3 = p2;
printf("p3: age->%d, name-.%s\n", p3.age, p3.name);
 
out:
p3: age->17, name->.Sam
 

[C语言 - 7] 结构体struct的更多相关文章

  1. C语言讲义——结构体struct

    结构体是一种变量类型,可以包含多个变量(变量类型不必相同). 结构体的关键字是struct也是一种值类型. 例:设计一个表示"书本"的结构体: structBook { chari ...

  2. C语言中结构体(struct)的几种初始化方法

    转自https://www.jb51.net/article/91456.htm     本文给大家总结的struct数据有3种初始化方法 1.顺序 2.C风格的乱序 3.C++风格的乱序 下面通过示 ...

  3. 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct

    https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...

  4. go语言之行--结构体(struct)详解、链表

    一.struct简介 go语言中没有像类的概念,但是可以通过结构体struct实现oop(面向对象编程).struct的成员(也叫属性或字段)可以是任何类型,如普通类型.复合类型.函数.map.int ...

  5. Swift语言精要 - 浅谈结构体(Struct)

    CGRect, CGSize, CGPoint这些是 . String, Int, Array, Dictionary这些我们经常用的也是结构体(Struct). 那么结构体(Struct)到底是什么 ...

  6. C语言结构体-struct

    知识点: 1)结构体的定义. 2)结构体的sizeof. 3)  结构体的指针. 1) 结构体的定义: 在逻辑上有一定关联的多个数据类型做为一整体进行操作的数据结构,它的关键字是struct.下面我将 ...

  7. C语言 - 结构体(struct)比特字段(:) 详细解释

    结构体(struct)比特字段(:) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26722511 结构体(struc ...

  8. Go语言学习笔记(四)结构体struct & 接口Interface & 反射

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

  9. Go语言学习笔记(四)结构体struct & 接口Interface & 反射reflect

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

随机推荐

  1. Android Studio设备背景色

    从eclipse转到Android Studio. Android Studio的一些设置 1.设置字体大小:Settings->Editor->Colors&Fonts-> ...

  2. ACM刷题常用链接

    武汉科技大学  http://acm.wust.edu.cn/ 华中科技大学 http://acm.hust.edu.cn/vjudge/toIndex.action 杭州电子科技大学  http:/ ...

  3. Effective C++学习笔记 条款02:尽量以const,enum,inline替换 #define

    尽量使用const替换 #define定义常量的原因: #define 不被视为语言的一部分 宏定义的常量,预处理器只是盲目的将宏名称替换为其的常量值,导致目标码中出现多分对应的常量,而const定义 ...

  4. Android远程图片获取和本地缓存

    对于客户端——服务器端应用,从远程获取图片算是经常要用的一个功能,而图片资源往往会消耗比较大的流量,对 应用来说,如果处理不好这个问题,那会让用户很崩溃,不知不觉手机流量就用完了,等用户发现是你的应用 ...

  5. Java 解析 XML

    Java 解析 XML 标签: Java基础 XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点 ...

  6. UVa 116 (多段图的最短路) Unidirectional TSP

    题意: 有一个m行n列的正整数环形矩阵(即矩阵第一行的上一行是最后一行,最后一行的下一行是第一行),从第一列的任意位置出发,每次只能向右,右上,右下三个方向行走,输出路径及路径上所有数之和的最大值,多 ...

  7. SharedPreferencesUtil

    用于缓存一个临时的变量 比如 SharedPreferencesUtil.put(getApplicationContext(), "userImage", user.conten ...

  8. Toast 用于一个页面有多个提示

    private Toast mToast; 2 初始化 mToast = Toast.makeText(this,"",Toast.LENGTH_SHORT); 3 方法 priv ...

  9. POJ 1486 Sorting Slides (二分图关键匹配边)

    题意 给你n个幻灯片,每个幻灯片有个数字编号1~n,现在给每个幻灯片用A~Z进行编号,在该幻灯片范围内的数字都可能是该幻灯片的数字编号.问有多少个幻灯片的数字和字母确定的. 思路 确定幻灯片的数字就是 ...

  10. 根据中国气象局提供的API接口实现天气查询

    中国气象局提供了三个天气查询的API接口: [1]http://www.weather.com.cn/data/sk/101190101.html [2]http://www.weather.com. ...