c/c++学习------>结构体
来源:互联网 发布:剪歌软件 编辑:程序博客网 时间:2024/06/11 15:21
结构体
1.定义和初始化
struct Teacher { char name[32]; int age; int id;};struct Teacher t1 = {"name", 54, 01}; //结构体类型 定义变量并初始化。typedef struct Student { char name[32]; int age; int id;}Student;Student t2;
t2 = {"name1", 22, 02}; //先定义变量,再进行初始化。
2.使用结构体
t1.name = "name2"; //第一种:通过寻址操作进行,寻址操作本身没有操作内存,赋值的时候才操作内存。t1.age = 50;Student *p = NULL;//第二种:通过指针间接赋值改变数据。p = &t2;p->name = "sduiso";p->age = 20;
3.结构体做函数参数(结构体变量 PK 结构体指针)结构体变量做函数参数修改的是的形参的值,和实参没有半毛钱关系;但是用结构体指针做函数参数时,修改的是实参本身。typedef struct Teacher{ char name[32]; int age; int id;}Teacher;void copyTeacher(Teacher *to, Teacher *from){ *to = *from;}int main(){ Teacher t1 = {"name", 54, 01}; Teacher t2; Teacher t3; t2 = t1; printf("t2.name:%s\n", t2.name); name//c编译器支持结构体赋值操作 printf("t2.age:%d\n", t2.age); 54 copyTeacher(&t3, &t1);//传结构体指针当函数参数 printf("copyTeacher() after............\n"); printf("t3.name:%s\n", t3.name); name printf("t3.age:%d\n", t3.age); 54 return 0;}4.结构体做函数基本操作/*--------------------------------------------------------------------------------------*/typedef struct Teacher{ char name[32]; int age; int id;}Teacher;Teacher * creatTeacher01(int num)//在堆上申请内存空间{ Teacher * tmp = NULL; tmp = (Teacher*)malloc(sizeof(Teacher) * num); if (tmp == NULL) { printf("tmp malloc memory size fail.\n"); return NULL; }}p, li { white-space: pre-wrap; }int creatTeacher02(Teacher **pT, int num) //二级指针,实参取地址传给形参(二级指针接一级指针),间接修改实参的值{int ret = 0;Teacher * tmp = NULL;tmp = (Teacher*)malloc(sizeof(Teacher) * num);if (tmp == NULL){
ret = -1;printf("tmp malloc memory size fail:%d\n", ret);return ret;}
*pT = tmp;return ret;}p, li { white-space: pre-wrap; }void freeTeacher(Teacher *p)//释放内存{if (p != NULL){
free(p);
p = NULL;}
}void printTeacher(Teacher *array, int num) //打印{ int i=0; for(i=0; i<num; i++) { printf("array[i].age:%d\n", array[i].age); }}void sortTeacher(Teacher *array, int num)//排序{ int i, j; Teacher tmp; for (i=0; i<num; i++) { for(j=0; j<num; j++) { if (array[i].age > array[j].age) { tmp.age = array[i].age; array[i].age = array[j].age; array[j].age = tmp.age; } } }}int main(){int ret = 0; int i = 0; Teacher Array[3]; int num = 3; Teacher *pArray = NULL;//pArray = creatTeacher01(num);ret = creatTeacher02(&pArray, num); if (ret != 0){printf("creatTeacher() return err:%d", ret);return ret;}for(i=0; i<num; i++) { printf("Please input age:"); scanf("%d", &(pArray[i].age)); } printTeacher(pArray, num); sortTeacher(pArray, num); printTeacher(pArray, num);freeTeacher(pArray); return 0;}
阅读全文
0 0
- [C学习]结构体
- Object-C 结构体学习
- C结构体struct学习
- 学习C语言结构体
- C语言-结构体学习
- C语言学习-结构体
- c/c++学习------>结构体
- C/C学习笔记/结构
- c 结构指针学习
- C语言深入学习--checklist3:结构体
- C语言学习笔记(20结构体)
- C语言学习笔记(21结构体)
- C语言结构体 基础学习
- C语言结构体的学习
- C语言学习第三天结构体
- c语言结构体的学习
- C语言学习之结构体
- 18.从零开始学习C语言--结构体
- Jquery插件之Growl
- PaaS平台——多租户的RBAC权限管理(一)基本概念
- import skimage.io ImportError: No module named skimage.io(编译pycaffe报错)
- 常用字符串Hash函数
- Hadoop学习笔记(二)--HDFS分布式文件系统(1)
- c/c++学习------>结构体
- 搭建SSH中出现的问题(Error configuring application listener of class)
- MySQL传统复制与GTID复制原理及操作详解
- Git使用基础和常用命令汇总
- java.sql.SQLException: Field 'id' doesn't have a default value
- Linux vim设定Tab键缩进
- JavaWeb开发常见异常总结
- react-native网络请求Fetch中遇到的坑
- JS对象方法,类方法,原型方法