结构体

构造类型:就是有基本的类型组成的

1.结构体  结构体是一种自定义的数据类型 和 int float 是一样的都可以定义变量

数组 只能存放一种类型的容器

结构体   可以存放多种数据类型  相对于数组更加的完整

2.一个结构体可以被作为另一个结构体中的普通变量

3.结构体的声明(数据类型的声明)

/*    struct 结构体名 {

char name[20];

int age; //结构体成员  结构体成员之间是要用分号隔开   在结构体内部定义变量的时候仅仅是声明,不能赋值

}; //分号是结构体声明的结束标示符,在声明的时候不能省略

*/

声明一个结构体变量(变量的声明)

//定义一个结构体变量

struct student stu1 ={"lee", 18,'m',90};

    struct student{//学生的结构体
char name[];
int age;
// char stuTele[11];
char gender;//性别
float score;
};
struct point{//点的结构体
float x;//横坐标
float y;//纵坐标
};
struct rect{//长方形结构体
float width;//宽度
float height;//长度
float x;//x坐标
float y;//y坐标
};
struct round{//圆圈
Point p;//一个结构体可以被作为另一个结构体中的普通变量
float r;
};
struct cube{//定义一个立方体
float leight;//长
float width;//宽度
float height;//高度
};
int main(int argc, const char * argv[]) {//main() 上面的都是 全局变量 //结构体类型 struct + 结构体名
//定义一个结构体变量
struct student stu1 = {"lee", ,'m',};
struct point p1 = {, 12.25};
struct rect r1 = {,};
struct round round1 = { {12.5,15.6}, 12.5};//这里要注意一下
struct cube cube1 = {12.5,3.4,23.5}; }

//给结构体的类型重命名  typedef

typedef struct student Student;

//    结构体重命名的第二种形式
typedef struct data{
int year;
int mounth;
int day;
}Day;//直接在定义的时候就重命名了 新起的名字与重命名的是等同的 都可以用
Day d1 = {,,};// 我们使用重命名的名字进行定义变量
Student stu1 = {"lee", ,'m',};
// 结构体成员的访问 结构体变量.成员变量名
//获取stu 的姓名,性别,年龄,分数
//给字符串赋值的时候要用到 strcpy()函数
strcpy(stu1.name, "Kitty");//给stud1的姓名改为kitty
printf("%s \n",stu1.name);
stu1.age;
stu1.name;
stu1.gender;
stu1.score;
    //获取stu1的基本信息; 输出其信息
//结构体的访问是通过 变量名.成员变量名
printf("name = %s age = %d gender = %c score = %.2f",stu1.name,stu1.age,stu1.gender,stu1.score);
    struct point p ={23.3,45.7};
//赋值的第一种方式 单个成员逐个赋值
p.x = ;
p.y = ;
//赋值的第二种方式 整体结构体赋值
struct point p1 = {,};
p = p1;
printf("%.2f %.2f \n",p.x,p.y);

//对于整体赋值的小技巧   数组作为一个结构体的成员时,就可以直接给数组赋值,对比之前数组是不能直接赋值的

//对于整体赋值的小技巧   数组作为一个结构体的成员时,就可以直接给数组赋值,对比之前数组是不能直接赋值的
printf("%.2f %.2f \n",p.x,p.y);
printf("%.2f %.2f \n",p.x,p.y);//语句要写在函数的内部
//赋值技巧
struct one{
int a[];
int num;
};
//数组作为结构体成员变量时,可以通过结构体的整体赋值为数组的每个元素赋值
struct one s1 ={{,},};
struct one s2 ={{,},};
s1 = s2;
for (int i = ; i < ; i++) {
printf("%d \t",s1.a[i]);
}

minAgePer = p1.age > p2.age ? p1 : p2;//这里是保存的是最大年龄的人的整体信息

minAgePer = minAgePer.age > p3.age ? minAgePer : p3;

下午笔记

struct teachr{
char name[];//分号隔开
char gender;
int age;
// float height;
};
//定义一个有5个元素的结构体数组
struct teachr Tea[] ={//存有5个结构体的数组 结构体数组
{"AA",'m',},//结构体数组元素 以逗号 隔开
{"邓超",'m',},
{"王大治",'m',},
{"陈姐",'w',},
{"XXX",'w',},//这里的逗号写不写无所谓
};
int b = Tea[].age;
struct teachr tea1 = Tea[];
for (int i = ; i < ; i++) {
printf("name is %s ,age is %d, sex is %c \n",Tea[i].name,Tea[i].age,Tea[i].gender);
}

结构体的内存空间:结构体的内存对齐方式--------(结构体所占内存空间大小 是以成员中最大数据类型为基本单位分配的)

*****

struct test{

        char m[];//如果把这一行放最后面  打印为 16
double a;//double 8个字节 float b;// int 、float 4个字节
//为了节省存储空间我们把定义的时候把所占内存最大的放最上面
// char m[10]; double a; float a; 顺序不同的放看结果
};
printf("%lu \n",sizeof(struct test));

分配的空间 前面的必须是后面的整数倍

实战:

.创建一个 Size 结构体,包含 width,height 两个变量。
并写以下函数:
函数 ,判断两个 size 是否等宽。
函数 ,判断两个 size 是否在等高。
函数 ,判断两个 size 是否相等 .创建一个 Point 结构体,包含 x,y 两个变量。
并写以下函数:
函数 ,判断两个点是否在一条水平线上。
函数 ,判断两个点是否在一条垂直线上。
函数 ,判断两个点是否相等 .某班有 个学生,三门课。分别编写 个函数实现以下要求:
() 求各门课的平均分;
() 找出有两门以上不及格的学生,并输出其学号和不及格课程的成绩;
() 找出三门课平均成绩在 - 分的学生,并输出其学号和姓名
.创建一个Rect结构体,包含origin,size两个变量。其中origin是Point类型的,size是Size类型的。
并写以下函数:
函数1,判断两个Rect是否相交。
函数2,判断两个Rect是否包含某个Point。
函数3,判断一个Rect是否在另外一个Rect中。
======
耶稣有13个门徒, 循环开始报数, 报道3的人去死, 最后存活的就是叛徒,找到叛徒的原来位置
有A,B,C,D四个候选人, 有n个人对其进行投票, 按票数从高到低进行输出.

好的题目

 

C:结构体的更多相关文章

  1. Go结构体实现类似成员函数机制

    Go语言结构体成员能否是函数,从而实现类似类的成员函数的机制呢?答案是肯定的. package main import "fmt" type stru struct { testf ...

  2. C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱

    一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...

  3. go语言结构体

    定义: 是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体. 成员: 每个值称为结构体的成员. 示例: 用结构体的经典案例处理公司的员工信息,每个员工信息包含一个唯一的员工编号.员工的名字. ...

  4. C语言中的结构体

    用户自己建立自己的结构体类型 1.  定义和使用结构体变量 (1).结构体的定义 C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体. (2).声明一个结构体类型的一般形式为: ...

  5. C++_系列自学课程_第_12_课_结构体

    #include <iostream> #include <string> using namespace std; struct CDAccount { double bal ...

  6. java socket传送一个结构体给用C++编写的服务器解析的问题

    另一端是Java写客户端程序,两者之间需要通信.c++/c接收和发送的都是结构体,而Java是直接发送的字节流或者byte 数组.解决方法:c++/c socket 在发送结构体的时候其实发送的也是字 ...

  7. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  8. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. C语言结构体对齐

    1.结构体变量中的元素如何访问? (1)数组中元素的访问方式:表面上有2种方式(数组下标方式和指针方式):实质上都是指针方式访问.(2)结构体变量中的元素访问方式:只有一种,用.或者->的方式来 ...

  10. C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用

    类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...

随机推荐

  1. dede 首页调用单页->栏目内容

    {dede:sql sql='Select content from dede_arctype where id=47'} [field:content/] {/dede:sql}

  2. XE7 - 程序图标及启动画面图片的注意事项

    还是继续昨晚写的,年前已经解决了这个问题,现在补记下.启动画面失真是本篇笔记的重点.搜索了很多文章,基本上大同小异,几乎都没怎么提及启动画面失真的问题.不知道是不是我的操作不对头,. Project ...

  3. 隐藏 php apache 的版本号

    隐藏Apache版本信息 找到apache安装路径,譬如\Apache\conf\httpd.conf 修改httpd.conf ServerTokens ProductOnly ServerSign ...

  4. view的onFinishInflate()何时调用的?

    onFinishInflate 当View中所有的子控件均被映射成xml后触发 比如你 自定义一个view叫myView ,路径是,com.test.view.MyView,此view是继承Linea ...

  5. JQuery Mobile实现手机新闻浏览器(2)

    在上一篇文章中,已经讨论了程序的结构和页面的布局,并简单介绍了一些jQuery Mobile的使用技巧.在本篇文章中,笔者将继续完成我们web应用的新闻浏览器的设计. 程序的启动 我们现在来研究一下程 ...

  6. bsp tree

    http://www.cnblogs.com/dreams/archive/2007/03/25/687267.html http://blog.csdn.net/iduosi/article/det ...

  7. VB6.0编程笔记——(2)开发环境准备&学习前导入

    工欲善其事必先利其器,着手开始学习写代码之前,我们需要先准备好需要用到的工具.这篇文章会教大家部署好环境,同时会告知前期我们需要知道的一点内容(可以不用特别理解,只要记住用法就行,后续会深入展开介绍) ...

  8. Drupal配置文件settings.php搜索规则

    Drupal的配置文件搜索是通过bootstrap.inc的conf_path()函数实现的: function conf_path($require_settings = TRUE, $reset ...

  9. DIV背景半透明文字不半透明的样式

    DIV背景半透明,DIV中的字不半透明 代码如下:<body bgcolor="#336699"> <div style="filter:alpha(o ...

  10. iOS学习中的一些误区

    周二拿到offer之后,周三确定了去哪家,今天周四.今天是一个例外.中午写更新. 人到了不同的阶段,最重要的就是要更新自己的方法论.也就是说,不能穿新鞋,走老路,这样人就不会有大的突破. 下面我就分析 ...