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动画 三种动画

    Android可以使用三种动画 Frame Animation-帧动画 ,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果 Tween Animation-补间动画,给出两个关键帧, ...

  2. Windows下搭建MySql Master-Master Replication

    1.首先下载最新版的MySql Server (http://dev.mysql.com/downloads/windows/installer/) 2.安装MySql Server到两台机器上 My ...

  3. Android布局详解之一:FrameLayout

      原创文章,如有转载,请注明出处:http://blog.csdn.net/yihui823/article/details/6702273 FrameLayout是最简单的布局了.所有放在布局里的 ...

  4. pinyin4j使用示例

    pinyin4j的主页:http://pinyin4j.sourceforge.net/pinyin4j能够根据中文字符获取其对应的拼音,而且拼音的格式可以定制pinyin4j是一个支持将中文转换到拼 ...

  5. Java [Leetcode 225]Implement Stack using Queues

    题目描述: Implement the following operations of a stack using queues. push(x) -- Push element x onto sta ...

  6. db2数据库Date相关函数

    1.db2可以通过SYSIBM.SYSDUMMY1.SYSIBM.DUAL获取寄存器中的值,也可以通过VALUES关键字获取寄存器中的值. SELECT 'HELLO DB2' FROM SYSIBM ...

  7. MySQL基础之第5章 操作数据库

    假设已经登录 mysql-h localhost -uroot -proot 5.1.显示.创建.删除数据库 show databases;     显示所有的数据库 create database ...

  8. ios 照片编辑的view封装

    转:http://www.cnblogs.com/xiaobaizhu/archive/2013/07/03/3170101.html 该控件有旋转,缩放,拖动,剪裁的功能,封装成了一个ImageCr ...

  9. 云计算服务模型,第 2 部分: 平台即服务(PaaS)

    英文原文:Cloud computing service models, Part 2: Platform as a Service 平台即服务 (PaaS) 常常是最容易让人迷惑的云计算类别,因为很 ...

  10. JavaScript 现状:方言篇

    导读 JavaScript 和其他编程语言有一个很大的不同,它不像单纯的一个语言,而像一个由众多方言组成大家族.从 2009 年 CoffeeScript 出现开始,近几年出现了大量基于 JavaSc ...