![](https://img.haomeiwen.com/i3049365/9478813dc09eef57.png)
NDK启航篇——C语言基础
NDK启航篇——C语言基础(指针)
NDK启航篇——C语言基础(函数指针)
NDK启航篇——C语言基础(内存分配)
NDK启航篇——C语言基础(字符串)
今天来写一下结构体
什么是结构体?
- 结构体是一种构造数据类型
把不同的数据类型整合起来成为一个自定义的数据类型
- 与Java中的类相似
- 是C中最复杂的数据类型
结构体的初始化方式
- ①声明的同时进行赋值
- ②先声明,声明之后赋值
//尖括号代表系统类库,std表示标准,io表示输入输出 引入标准输入输出
#include<stdio.h>
//lib表示类库 引入标准类库
#include<stdlib.h>
struct Man{
char* name;
int age;
int (*func)();
};
void main(){
//初始化结构体的变量
//①声明的同时进行赋值
struct Man m = {"TOM",21};
//②先声明
struct Man m1 ;
//声明之后赋值
m1.age = 20;
m1.name = "JERRY";
printf("%s,%d\n",m1.name,m1.age);
getchar();
}
结构体的写法
- struct 名字 {
···
}; - struct 名字 {
···
}m1,m2("TOM",10);//结构体变量名 - struct 名字 {
···
}名字;
//取别名
typedef int Age; - 匿名结构体
作用:控制结构体变量的个数,相当于单例
struct{
char name[10];
int age;
}m1,m2;
- 结构体嵌套
struct Teacher{
char name [10];
};
struct Student{
char name [20];
int age;
struct Teacher t;
};
void main(){
struct Student s = {"TOM",10,{"JERRY"}};
struct Student s1;
s1.age = 10;
strcpy(s1.t.name,"JERRY");
getchar();
};
什么是结构体指针
- 结构体指针就是指向结构体地址的指针
struct Man {
char name[20];
int age;
};
void main (){
struct Man m1 = {"TOM",10};
struct Man *p = &m1;
printf("%s,%d\n",m1.name ,m1.age);
printf("%s,%d\n",(*p).name ,(*p).age);
//"->"是"(*p)."的简写
printf("%s,%d\n",p -> name ,p -> age);
getchar();
};
什么是结构体指针数组
- 结构体指针就是指向结构体地址的指针
struct Man {
char name[20];
int age;
};
void main (){
struct Man mans[] = {("TOM",10),("TOM",10)};
//遍历数组①
struct Man *p = mans;
for(;p<names +2;p++){
printf("%s,%d\n",p -> name ,p -> age);
}
②
int i = 0;
for(;i<2;i++){
printf("%s%d\n",mans[i].name,mans[i].age);
}
struct Man *p = &m1;
printf("%s,%d\n",m1.name ,m1.age);
printf("%s,%d\n",(*p).name ,(*p).age);
//"->"是"(*p)."的简写
printf("%s,%d\n",p -> name ,p -> age);
getchar();
};
结构体大小(字节对齐)
- 结构体变量的大小按最大的分配
必须是最宽基本数据类型的整数倍
- 提升读取效率
struct Man{
int age;
double weight;
};
void main(){
struct Man m1 = {10,20.1};
printf("%d,%#x\n",sizeof(m1),&m1);
getchar();
}
网友评论