C语言结构体篇 结构体
在描述一个物体的属性的时候,单一的变量类型是无法完全描述完全的。所以有了灵活的结构体变量。 结构体变量从意义上来讲是不同数据类型的组合,从内存上来讲是在一个空间内进行不同的大小划分。
1.1 结构体类型变量的定义
struct 结构体名{
结构体成员;
};
struct student{
unsigned int id;
char name[];
float score[];
//...
};
1.2 结构体变量的声明
定义了结构体变量后,并没有在内存中开辟相应的空间,只有声明了变量之后,才是开辟了相应的结构体空间。
struct student stu1;
struct student stu2;
1.3 结构体成员变量的使用
stu1.id = ;
stu1.name = "kmist"
stu1.score[] = ;
//...
1.4 ‘.’ 和 ‘->’ 的区别 如果发生了地址跳转,就使用->
//定义一个student结构体
struct student{
long id;
char name[];
//...
};
//定义一个class结构体,其中声明了student的结构体.
struct class{
int room;
struct student stu1;
struct student stu2;
};
//声明class 结构体变量
struct class class1;
class1.room = ; //直接成员变量用 .
class1->stu1.id = ; //访问其他空间地址用 -> ,包括数组等.
class2->stu2.id = ;
1.5 结构体动态空间的划分
有的时候只是临时需要申请一个动态空间,用完以后就可以释放,这样能节省程序运行时的内存空间.
#include <stdlib.h>
struct student *stu = (struct student *)malloc(sizeof(struct student));
stu->id = ; //通过地址访问,用->
printf("%d\n",stu->id);
free(stu);
1.6 结构体数组
结构体数组本质上也是数组,是开辟两个连续相同结构的空间.
struct student{
int id;
char name[];
};
struct student stu[]={,"kmist"};
struct student *p = stu; //p = stu[0]; (p+1) = stu[1]
//将stu[0] 里的内容拷贝到 stu[1]中
//stu[1]->id = stu[0]->id; xx 这是错误的写法,结构体等空间的拷贝要用拷贝函数
memcpy((p+),p,sizeof(struct student));
//使用
printf("%d\n",(p+)->id);
C语言结构体篇 结构体的更多相关文章
- go语言之进阶篇结构体指针类型匿名字段
1.结构体指针类型匿名字段 示例: package main import "fmt" type Person struct { name string //名字 sex byte ...
- 如何系统学习C 语言(中)之 结构体篇
1,结构体 在前面我们知道变量和数组都可以用来存储数据,变量用来存储单个数据,数组可以用来存储一组同类型的数据,但你有没有发现--它们都只适合单一属性的数据.那现实生活中,很多对象都是具有多属性的.例 ...
- C语言 结构体篇
结构体:是一种构造类型 它是由若干成员组成的 其中每一个成员都可以是一个基本数据类型或者又是一个构造类型 定义结构体变量后,系统就会为其自动分配内存 为了便于更大的程序便于修改和使用 常常将结构体类 ...
- Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型
Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...
- Swift入门篇-结构体
前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中 ...
- 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符
[源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...
- C语言中的结构体,结构体数组
C语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存 ...
- 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型
函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...
- OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)
OpenGL ES着色器语言之语句和结构体(官方文档第六章) OpenGL ES着色器语言的程序块基本构成如下: 语句和声明 函数定义 选择(if-else) 迭代(for, while, do-wh ...
随机推荐
- java使用jdbc连接数据库步骤
确定连接的数据库类型<mysql,oracle,db2,moangdb,sqlservlet> 下载数据库的驱动(http://mvnrepository.org),并把jar包添加到项目 ...
- 深入理解java虚拟机阅读笔记(1)运行时数据区域
java虚拟机所管理的内存区域主要分为方法区.堆:虚拟机栈.本地方法栈.程序计数器,如图: 1.程序计数器是当前线程所执行的字节码行号指示器,用以记录当前指令执行的位置.程序计数器是线程私有的,每个线 ...
- 1.字符串池化(intern)机制及拓展学习
1.字符串intern机制 用了这么久的python,时刻和字符串打交道,直到遇到下面的情况: a = "hello" b = "hello" print(a ...
- CommonJS 的实现原理
CommonJS 使用 Node.js 的四个环境变量moduleexportsrequireglobal 只要能够提供这四个变量,浏览器就能加载 CommonJS 模块. Browserify 是目 ...
- Navicat for MySQL导入文件
1.导入SQL文件超出Navicat限制时,需要设置其限制的大小(具体看SQL文件大小) 打开Navicat For MySQL的命令行界面,输入: set global max_allowed_pa ...
- Description Resource Path Location Type Java compiler level does not match the version of the installed Java project facet Unknown Faceted Project Problem (Java Version Mismatch)
project 编译问题,需要三处的jdk版本要保持一致,才能编译通过. 1.在项目上右键properties->project Facets->修改右侧的version 保持一致 2. ...
- java设置随机数教程
java作为程序猿开发人员都在使用的一款编程语言,许多入门的朋友都陷入了一个简单的问题就是,使用java开发时随机数要怎么设置?java怎么设置随机数?经常会有地方需要用到随机数,不用着急,一起来看看 ...
- 命令行输入Jmeter提示不是内部或外部命令,处理方式:添加环境变量
命令行输入Jmeter提示不是内部或外部命令,需要在环境变量path中添加jmeter的bin目录绝对路径 我的电脑 > 右击 >属性 > 高级系统变量 > 环境变量 > ...
- WSL的unable to resolve host问题
运行apt-get的时候提示 sudo: unable to resolve host DESKTOP-PS8VD9E 在 /etc/hosts文件中 127.0.0.1 对应主机名字给加一行就好了
- CPU的段寄存器
http://www.cnblogs.com/tolimit/p/4775945.html?utm_source=tuicool&utm_medium=referral CPU的段寄存器 在C ...