C-结构体、枚举
#include <stdio.h> //结构体:可以由多个不同类型的数据构成
int main()
{
struct Person
{ //里面的3个变量,可以称为是结构体的成员或者属性
int age;
double height;
char *name;
}; struct Person p = {, 1.55, "jack"};//根据结构体类型,定义结构体变量,,,,且只能在定义结构体变量的同时对成员进行依次赋值。
p.age = ;
p.name = "rose"; return ;
}
#include <stdio.h> int main()
{ //1.定义结构体类型(并不会分配存储空间)
struct Date
{
int year;
int month;
int day;
}; //2.定义结构体变量(真正分配存储空间)
struct Date d1 = {, , };
struct Date d2 = {, , };
//会将d1 所有成员的值对应地赋值给d2的所有成员
d2 = d1; return ;
}
从小到大,从上往下

#include <stdio.h>
int main()
{
struct Student
{
int age;
char *name;
} struct Student stu;
stu.age = ;
stu.name = "jack"; int s = sizeof(stu);
printf("%d\n", s); return ;
}
//输出为:16
//补齐算法, 结构体所占内存空间,一定为最大成员所占存储空间的倍数,
变量的多种定义方式:
#include <stdio.h>
int main()
{ /*方式一:
//1.类型
struct Student
{
int age;
double height;
char *name;
};
//2.变量
struct Student stu = {20, 1.78, "jack"};
*/
//方式二
struct Student
{
int age;
double height;
char *name;
} stu;//等同于方式一 //包括两个部分 1,定义结构体类型 2,利用新定义好的类型来定义结构体变量 //即定义类型的同时定义变量
struct Student stu2;//再次使用S他人的n天
//方式三
struct {
int age;
char *name;
} stu;//缺点:不能重用 return ;
}
总结: 定义结构体变量的3种方式
1,先定义类型再定义变量
struct Student { int age; };
struct Student stu;
2, 定义类型的同时定义变量
struct Student { int age; } stu; struct Student stu2;
3, 定义类型的同时定义变量(省略类型名称)
struct { int age; } stu;
//指向结构体的指针
int main()
{
struct Student
{
int no;
int age;
}; struct Student stu = {, }; struct Student *p;//指针变量p将来指向struct Student类型的数据
p = &stu;//指针变量p指向了stu变量 //第一种
printf("age= %d, no=%d\n", stu.age, stu.no); //第二种
printf("age= %d, no=%d\n", (*p).age, (*p).no);//访问stu的存储空间里的no //第三种
printf("age=%d, no=%d\n", p->age, p->no);
}
总结:
1, struct Student *p;
2, 利用指针访问结构体成员
1》 (*P).成员名称
2》 p->成员名称
//结构体的嵌套
int main()
{
struct Date
{
int year;
int month;
int day;
} struct Student
{
int no;
//int year;
//int month;
//int day; struct Date birthday;
struct Date ruxueDate;
}
struct Student stu = {, {, , }, {, , }};
return
}
枚举
//枚举
int main()
{
//定义枚举类型
enum Season
{
spring,//0 也可以自定义为1
summer,//
autumn,//
winter//
};
//2,定义枚举变量
enum Season s = summer
return ;
}
数据类型总结----------------------------------
基本数据类型
int
long int 、 long 8 %ld
short int 、 short 2 %d %i
unsigned int、 unsigned 4 %zd
signed int、 signed、 int 4 %d %i
float/double
floar 4 %f
double 8 %f
char 1 %c %d
char类型保存在内存中的是它的ASCII值
二构造类型
1,数组
只能由同一种类型的数据组成、
2,结构体
可以由不同类型的数据组成
三、指针类型
间接操作变量的值
C-结构体、枚举的更多相关文章
- OC基础--结构体 枚举做类成员属性
结构体 枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期 毕业日期 -- 结构体 代码示例: 声明文件 Student.h: #import <Foundation ...
- C# 结构体 枚举类型
注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...
- C# 类&结构体&枚举
类: class Lei //要和static void Main(string[] args)平级: { public int lei_int; //public是关键字,代表访问权限,这里是公 ...
- C 碎片八 结构体&枚举&联合
一.结构体 1, 结构体定义 结构体类型的定义:任意数据类型变量的集合.用于描述一个具体的事物的信息,在C语言中描述一件事物一般都是用结构体 声明结构体类型的格式: struct 结构体名 {成员列 ...
- C#基础 结构体 枚举类型
结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...
- C++_知识点_结构体/枚举/联合
//C++中结构体的不同之处 #include <iostream> #include <string> using namespace std; int main(void) ...
- C语言的结构体,枚举类型在程序中的作用
http://www.xue63.com/xueask-1221-12212854.html 结构和枚举类型从程序实现的角度来说,是用更接近自然语言的方式来表达数据.比如说实现2维空间的点,你可以使用 ...
- C#学习笔记_12_枚举&结构体
12_枚举&结构体 枚举 是一种数据类型 适用于某些取值范围有限的数据 语法: [访问权限修饰符] enum 枚举名 { 枚举值 } 枚举名遵循大驼峰命名法 枚举一般情况下是和switch c ...
- Swift超详细的基础语法-结构体,结构体构造器,定义成员方法, 值类型, 扩充函数
知识点 基本概念 结构体的基本使用 结构体构造器(构造函数/构造方法) 结构体扩充函数(方法), 又称成员方法 结构体是值类型 1. 基本概念 1.1 概念介绍 结构体(struct)是由一系列具有相 ...
- swift中类与结构体
写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类 ...
随机推荐
- C#-黑客-数据库访问-字符串的攻击和防御
C#中用基本的方法对数据库进行增删改查,会被黑客利用,写入其他的代码以实现对数据库的数据进行其他的操作.例如: 对下列数据库的某个信息进行修改操作 修改代码: using System; using ...
- 匿名内部类为什么访问外部类局部变量必须是final的?
1.内部类里面使用外部类的局部变量时,其实就是内部类的对象在使用它,内部类对象生命周期中都可能调用它,而内部类试图访问外部方法中的局部变量时,外部方法的局部变量很可能已经不存在了,那么就得延续其生命, ...
- 绘制图形与3D增强技巧(二)----直线图元
一. glBegin(GL_LINES); glend(); 二.线带和线环 glBegin(GL_LINE_STRIP); glend(); glBegin(GL_LINE_LOOP); glend ...
- 关于当一个C#工程移植到另一台机子上(win7)上时,程序报错。dll没有被指定在Windows上运行,或者它包含错误。请尝试使用原始安装媒体重新安装程序。。。。。。
, 解决方法:通过从网上重新下载dll文件 拷贝到报错的目录下,替换掉原有的dll,可以正确运行.
- 一个关于AdaBoost算法的简单证明
下载本文PDF格式(Academia.edu) 本文给出了机器学习中AdaBoost算法的一个简单初等证明,需要使用的数学工具为微积分-1. Adaboost is a powerful algori ...
- ( 译、持续更新 ) JavaScript 上分小技巧(一)
感谢好友破狼提供的这篇好文章,也感谢写这些知识点的作者们和将他们整理到一起的作者.这是github上的一篇文章,在这里本兽也就只做翻译,由于本兽英语水平和编程能力都不咋地,如有不好的地方也请多理解体谅 ...
- CF 445B DZY Loves Chemistry(并查集)
题目链接: 传送门 DZY Loves Chemistry time limit per test:1 second memory limit per test:256 megabytes D ...
- [转]如何启用Ubuntu的休眠模式
大家都知道 Windows 有休眠模式,其实 Ubuntu 也有.休眠模式简单来说,就是可以在用户暂时离开时将内存中的所有内容都写入到硬盘当中,当用户下次开机时,就可以直接启动到上次保存的时间状态. ...
- android service 本地 远程 总结
android编写Service入门 android SDK提供了Service,用于类似*nix守护进程或者windows的服务. Service有两种类型: 本地服务(Local Service) ...
- Linux下串口编制【转】
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统.调制解调 ...