一、C语言结构体数组
1、如何定义结构体数组
a) 单独写成一行来定义
struct student stu[3]; //可以用的下标是 stu[0]--- stu[2]//定义结构体数组的时候还可以同时进行初始化
struct student stu[ ]={ { },{ },{ } };
struct student stu[3] = {
{1001,"张三",1,18,"1栋1单元",12,30,2000},
{1002,"李四",1,20,"2栋2单元",11,15,1998},
{1003,"王五",1,22,"3栋3单元",10,15,1996}
};
b) 定义结构体的时候顺便就定义结构体数组
struct student {int num; char name[100]; int sex; int age; char address[100]; struct date birthday;
}stu[3];
//演示指向结构体变量的指针
#include<stdio.h>struct date
{int month;int day;int year;
};struct student //定义一个结构体类型
{int num; //学号char name[100]; //姓名int sex; //性别:0 女 , 1 男int age; //年龄char address[100]; //地址struct date birthday; //生日 结构体类型的变量
}s1,s2;
int main()
{struct student stu[3] = {{1001,"张三",1,18,"1栋1单元",12,30,2000}, //stu[0]{1002,"李四",1,20,"2栋2单元",11,15,1998}, //stu[1]{1003,"王五",1,22,"3栋3单元",10,15,1996} //stu[2]};stu[1].age++; //李四的年龄+1printf("name=%s\n",stu[1].name);printf("age=%d\n",stu[1].age);return 0;
}
二、结构体指针
结构体指针就是结构体变量的指针,这个指针肯定是指向该结构体变量所占据的内存段的起始地址。
当然,结构体变量指针 也可以指向结构体数组中的元素,因为结构体数组中的每个元素它就相当于一个结构体变量;
//现在,ps就指向了stu,stu里面内容若发生改变了,就等于ps所指向的内容发生改变。
//如何通过结构体变量的指针来访问结构体变量的成员呢?有两种方法:
(*ps).age=29; //*ps 等价于 stu,这里加了括号是因为优先级问题,*不如 . 的优先级高ps->sex=1; //其中这个 -> 叫 指向结构体成员运算符,优先级是最高的
#include<stdio.h>
#include<string.h> //字符串拷贝命令
struct date
{int month;int day;int year;
};struct student //定义一个结构体类型
{int num; //学号char name[100]; //姓名int sex; //性别:0 女 , 1 男int age; //年龄char address[100]; //地址struct date birthday; //生日 结构体类型的变量
}s1,s2;
int main()
{struct student stu; //定义一个结构体变量struct student *ps; //定义一个结构体变量的指针ps=&stu;strcpy(stu.name,"小虎");stu.age=16;//现在,ps就指向了stu,stu里面内容若发生改变了,就等于ps所指向的内容发生改变。//如何通过结构体变量的指针来访问结构体变量的成员呢?有两种方法:(*ps).age=29; //*ps 等价于 stu,这里加了括号是因为优先级问题,*不如 . 的优先级高ps->sex=1; //其中这个 -> 叫 指向结构体成员运算符,优先级是最高的ps->num=1001;printf("name=%s\n",ps->name);printf("age=%d\n",ps->age);printf("num=%d\n",(*ps).num);printf("sex=%d\n",stu.sex);return 0;
}
//演示指向结构体数组的指针
#include<stdio.h>
struct date
{int month;int day;int year;
};struct student //定义一个结构体类型
{int num; //学号char name[100]; //姓名int sex; //性别:0 女 , 1 男int age; //年龄char address[100]; //地址struct date birthday; //生日 结构体类型的变量
}s1,s2;
int main()
{struct student stu[3] = {{1001,"张三",1,18,"1栋1单元",12,30,2000}, //stu[0]{1002,"李四",1,20,"2栋2单元",11,15,1998}, //stu[1]{1003,"王五",1,22,"3栋3单元",10,15,1996} //stu[2]};struct student *ps;ps=stu; //数组名字代表数组首地址。数组中数据在内存中都是挨着的;for(int i=0;i<3;i++){printf("num=%d\n",ps->num);printf("name=%s\n",ps->name);printf("age=%d\n",ps->age);ps++; //数组第一地址表示张三,++后就是李四的地址,再++后就是王五的地址;从张三跳跃到李四//意味着ps指向了下一个数组元素的开始地址printf("----------------------------------\n");}return 0;
}
说明:
(++ps)->num; //++在前面表示先加后用,所以表示的是李四
#include<stdio.h>
#include<string.h> //字符串拷贝命令
struct date
{int month;int day;int year;
};struct student //定义一个结构体类型
{int num; //学号char name[100]; //姓名int sex; //性别:0 女 , 1 男int age; //年龄char address[100]; //地址struct date birthday; //生日 结构体类型的变量
}s1,s2;
int main()
{struct student stu[3] = {{1001,"张三",1,18,"1栋1单元",12,30,2000}, //stu[0]{1002,"李四",1,20,"2栋2单元",11,15,1998}, //stu[1]{1003,"王五",1,22,"3栋3单元",10,15,1996} //stu[2]};//演示指向结构体数组的指针struct student *ps;ps=stu; //数组名字代表数组首地址。数组中数据在内存中都是挨着的;printf("%s\n",(++ps)->name); //++在前面表示是:先加后用return 0;
}
#include<stdio.h>
#include<string.h> //字符串拷贝命令
struct date
{int month;int day;int year;
};struct student //定义一个结构体类型
{int num; //学号char name[100]; //姓名int sex; //性别:0 女 , 1 男int age; //年龄char address[100]; //地址struct date birthday; //生日 结构体类型的变量
}s1,s2;
int main()
{struct student stu[3] = {{1001,"张三",1,18,"1栋1单元",12,30,2000}, //stu[0]{1002,"李四",1,20,"2栋2单元",11,15,1998}, //stu[1]{1003,"王五",1,22,"3栋3单元",10,15,1996} //stu[2]};//演示指向结构体数组的指针struct student *ps;ps=stu; //数组名字代表数组首地址。数组中数据在内存中都是挨着的;printf("%s\n",(ps++)->name); //++在后面表示是:先用后加printf("%s\n",ps->name); //因为上一行代码先加后用,所以在上一行代码的地址上+1return 0;
}
一、C语言结构体数组相关推荐
- C语言 | 结构体数组
C语言结构体数组概述 一个结构体变量中可以存放一组有关联的数据,如一个学生的学号.姓名.成绩等数据,如果有10个学生的数据需要参加运算,显然应该用数组,这就是结构体数组. 结构体数组与之前介绍的数值型 ...
- c语言字符结构数组初始化,C语言结构体数组初始化问题
C语言结构体数组指定初始化器时,下面的三种方法,只有第三种可以,但是第一,二种,我看不出语法上哪错了,编译器DEVc++会报错 [Error] C99 designator 'num_insur' o ...
- c语言 结构体数组的赋值
c语言 结构体数组的赋值 //**创建结构体** #include<stdio.h> struct Class{int id;char name[10]; }; //******结构体数组 ...
- c语言如何为结构数组赋值,C语言结构体数组同时赋值的另类用法
说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子: #include struct student { int a; int b ; int c ; }; stru ...
- C语言结构体数组,结构体数组的定义,结构体数组的输出,结构体的应用
结构体数组 结构体数组的定义: 结构体数组格式:声明变量类型 数组名称[数组长度] //定义一个结构体数组名为a,它里面包含有5个元素,每一个元素都是一个结构体变量 Wor a[5]={}; #inc ...
- c语言结构体数组内存大小,如何为C语言的结构体数组分配/释放内存?
如何为C语言的结构体数组分配/释放内存? struct emp { char name[10]; float salary; }; int main(int argc,char* argv[]) { ...
- C语言结构体数组的使用
1.结构体数组的优点 结构体可以存储不同的数据类型,将他们互相联系起来.结构体数组可以连续存储多个结构体,和数组作用相似.比如想定义同一个最小外接矩形的四个坐标值,并给予这个矩形一个特征编号.当需要存 ...
- c语言——结构体数组——学生成绩表
例题详解: 1. 在主函数中定义结构体数组,struct student stutable[10]; struct student {int stunum;//学号char name[20];//姓名 ...
- C 语言结构体数组指针以及函数
结构体数组指针 指针变量可以指向一个结构体数组,这时指针变量的值是整个数组的首地址. 设 ps 为指向结构体数组的指针变量,则 ps 也指向该结构体数组的第 0个元素,ps+1 指向第一个元素,ps+ ...
- C语言结构体数组成员的赋值
结构体的数组不能直接等号赋值,如果直接赋值会出现如下错误 错误代码示范: 编译结果: 错误原因: 结构体数组成员在引用的时候取的是数组名(是一个常量),所以不能直接将地址值赋给常量. 正确代码: 字符 ...
最新文章
- Docker网络详解——原理篇
- 为什么线程被唤醒后锁会被抢?
- 机房网络光纤扩容施工
- tabBar的图标不被系统渲染
- 设计模式C++实现(8)——代理模式
- 如何遍历某数据库中的每一个表的总记录数
- 10-1 channel
- linux初学者-软件安装与管理篇
- cmake 安装不同版本
- cad填充密度怎么调整_CAD填充技巧之填充比例
- ERP生产线管理系统 with WAMP
- python把英语句子成分字母_英语句子成分
- linux小白家教学一
- 微信公众号文章阅读数和点赞数采集接口
- matlab光子晶体求反射率,一维光子晶体禁带结构的MATLAB分析计算讲解.PDF
- android设置UI界面背景,Android ROM定制——界面美化基础(framework-res、SystemUI修改)...
- 闲扯Maven项目代码组织形式
- Visual Studio大写小写转换切换快捷键
- 换了爸爸,推特用户坐不住了……
- 【OpenPCDet】稀疏卷积SPConv-v1.2代码解读(5)
热门文章
- 苹果发布全新 iOS 及 OS X 系统,同时推出全新编程语言 Swift
- ArticulationBody的锚点位置和锚点旋转
- python xlwt写入数据超过范围限制_用xlrd包读取Excel文件-尽量不用xlwt包写入Excel文件最多能支持65536行数据。...
- 【金猿人物展】实在智能创始人、CEO孙林君:我们为什么坚定在IPA方向努力?...
- 如何进行系统硬盘分区
- QGIS使用 版本3.22
- Windows Key
- 在mysql语句中为什么要加反引号
- 中e管家个人投资理财技巧有以下几种
- scip指令集_「欧盟」SCIP数据库提交专题问答 QA