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 ...
随机推荐
- Oracle数据库分割字符串function方法
下面我直接上传一串代码源码, create or replace function strsplit(p_value varchar2, p_split varchar2 := ',') --usag ...
- WinRAR(WinZip)压缩与解压实现(C#版Window平台)
本文的原理是借助Windows平台安装的WinRAR(WinZip)实现C#程序的调用(注:WinRAR压缩解压WinZip同样适用). 先来看WinRAR(WinZip)自身的支持调用命令: 压缩命 ...
- Bootstrap学习笔记(四)
四.JS插件 概述:与jQueryUI库类似,Bootstrap提供了十几个插件函数.有两种调用方法: (1) 传统JS变成方式 $(...).插件函数.(); (2) 使用data-*扩展属性(推荐 ...
- Python基本操作之文件操作
一. 1.文件操作的函数 open("文件名字(路径)",mode="模式",encoding="字符集") 2.模式:r,w,a,r+,w ...
- 设置 text-align: center;line-height:height 居中无效
1.设置文字水平居中 内联元素(行内元素)使用: text-align: center: 使用后文字仍然没有居中 解决方法:设置width:100%: 块元素使用: margin: 0 auto; 2 ...
- js-对象的方法详解
Object.prototype 上的方法: constructor 返回创建该对象的构造函数 var arr = []; arr.constructor == function Array() { ...
- Oracle:Start with connect by prior 递归
SELECT * from CONNECT BY {PRIOR列名1=列名2|列名1=PRIOR列名2} [START WITH]; Oracle的递归查询: START WITH :描述开始 ...
- 翻译-ExcelDNA开发文档
转载自个人主页 前言 翻译开源项目ExcelDNA开发文档 异步处理 ExcelDNA支持两种异步函数: RTD,该函数适用与Excel2003及以上版本,(当你使用ExcelAsyncUtil.*时 ...
- 【微软大法好】VS Tools for AI全攻略(4)——选择适合自己的虚拟机
当我们选择好了自己的虚拟机后,也许效果不尽如人意.就比如我,发现代码在训练一段时间之后,CPU的使用率会下降. 这个时候我们就要开始考虑,是不是我们选择的虚拟机不是适合自己的型号. Azure的虚拟机 ...
- selenium安装及官方文档
selenium-python官方文档: https://selenium-python.readthedocs.io/ python3.5已安装的情况下,安装示意图如下 命令行输入 pip3 ins ...