当前位置:网站首页>C——结构体
C——结构体
2022-07-23 02:03:00 【Java学不会】
结构体
1、自定义类型
自定义类型就是给数据类型取别名
自定义类型不会产生新类型
typedef int INTEGER; INTEGER i,j; typedef int* INTEGER; INTEGER p; INTEGER *q
2、结构体
结构体中成员类型可以
相同也可以不同
在C语言中,数组是表示类型相同的数据,而结构体则是若干类型不同或相同数据项的集合
2.1、结构体类型说明
声明结构体类型的一般形式为:
struct 结构体名{ 成员列表 }例:
struct student{ int num; char name[8]; float score; }
2.2、结构体变量的定义
声说明结构体
类型,在定义结构体变量struct student{ int num; char name[8]; }; struct student a,*b,c[3];声明结构体类型的
同时定义结构体变量struct student{ int num; char name[8]; }a,*b,c[3];直接定义结构体变量struct { int num; char name[8]; }a,b,c[3];使用
用户自定义类型定义结构体变量typedef struct student{ int num; char name[8]; }STD; STD a,*b,c[3]
2.3、结构体的初始化
结构体
变量的初始化struct data{ int a; float b; }s={ 12,24.56};结构体
数组的初始化struct { int x; int y; }c[3]={ 12,24,16,48,60,72};
2.4、结构体变量所占空间大小
结构体变量所占空间大小等于所有成员之和struct std{ int a[2]; //此处是VC6.0环境下(int占四个字节) char ch[10]; float s; double f; } std1,*p=&std1; 结构体变量std1所占的内存空间字节数为:30 结构体指针变量p所占的内存空间字节数为:4
2.5、结构体成员的引用
形式1:结构体变量名.成员名
形式2:(*结构体指针名).成员名
形式3:结构指针名->成员名
.成员运算符->指向运算符#include <stdio.h> struct abc{ int a,b,c; }; int maint(){ struct abc s[2]={ { 1,2,3},{ 4,5,6}}; int t; t=s[0].b+s[1].a; printf("%d\n",t); return 0; } 输出结果:6
3、链表
3.1、处理动态链表所需的函数
malloc()函数:分配存储单元int *p; p=(int*)malloc(sizeof(int)); //分配整型存储单元,返回整型指针赋给指针pcalloc()函数:分配指定的存储单元char *p; p=(char*)calloc(10,sizeof(char)); //分配10个字符型的存储单元,返回首地址赋给指针pfree()函数:释放存储单元free(p); //释放指针p所指的存储单元
3.2、指向自身的结构体类型
数据域(data)——指针域(next)
struct node{ int data; struct node *next; };
3.3、静态链表
struct node{
int data;
struct node *next;
};
int main(){
struct node a,b,c,*p; //定义
a.data=1;b.data=2;c.data=3; //赋值
a.next=&b;b.next=&c;c.next=NULL; //连接
p=&a;
while(p){
printf("%d\n",p->data);
p=p->next;
}
return 0;
}
3.4、链表的插入与删除
插入(后插法):将q节点插入到p节点之后
q->next=p->next; p->next=q;删除:将q节点从链表中删除
p->next=q->next; free(q);
边栏推荐
猜你喜欢
![[secret history of bug] uint8 data exceeds the type range, output 0x0102](/img/b6/86e017ccee26fcdea8b653731fea91.png)
[secret history of bug] uint8 data exceeds the type range, output 0x0102

2022-07-22:以下go语言代码输出什么?A:1;B:1.5;C:编译错误;D:1.49。 package main import “fmt“ func main() { var i

Peptide nucleic acid coupled polypeptide ile Glu Gly Arg PNA (s-2222) | BOC Leu Gly Arg PNA

Tensorflow 2.0深度学习教程

PNA polypeptide suc ala ala Pro AAA PNA suc ala3 PNA Pyr Phe Leu PNA

Accumulation of FPGA errors

抖音白天与晚上触发不同特效的Graph节点编写

【洛谷】P1318 积水面积

Get the C language pointer in one article

Judge whether it is void type
随机推荐
canal 02
1、 Buildreoot directory structure
PNA specification information | soybean peroxidase labeled PNA (peptide nucleic acid, PNA)
Leetcode 110. 平衡二叉树
2022-07-22:以下go语言代码输出什么?A:1;B:1.5;C:编译错误;D:1.49。 package main import “fmt“ func main() { var i
如何做好陪同翻译的工作
判断是否为void类型
程序环境和预处理
Tidb 3.0安装
Can GF futures open an account? Is it safe?
Redis 6.0源码学习 Simple Dynamic String
A ConvNet for the 2020s 论文阅读
今天的码农女孩学习了关于node下的Express框架的知识
Verilog语法基础HDL Bits训练 04
【无标题】
Q-Vision+Kvaser CAN/CAN FD/LIN总线解决方案
1058 A+B in Hogwarts
How to determine the end point of a software test
operator=中自我赋值和异常安全问题
Leetcode 110. balanced binary tree