C语言里的结构体
1.结构体的语法格式
struct Example
{
int i;//成员变量
char ch;
double d;
};
typedef struct
{
int i;
char ch;
double d;
}Example1;
typedef struct
{
char name[100];
int ID;
char address[100];
}Student;
int main(int argc,constchar * argv[])
{
struct Example s;
s.i = 10;//点是成员运算符
s.ch = 'a';//结构体变量的成员只能逐个赋值与访问
s.d = 3.14;
//s = {10, 'b', 2.68};//不能整体赋值或访问
printf("%d,%c,%lg\n", s.i, s.ch, s.d);
Example1 s1 = {20,'b',2.68};//结构体变量的初始化
printf("%d,%c,%lg\n", s1.i, s1.ch, s1.d);
Example1* p = &s1;
p->i = 30;//通过指针对成员变量赋值时,需要使用->这个成员运算符
p->ch = 'c';
p->d = 9.8;
printf("%d,%c,%lg\n", p->i, p->ch, p->d);
Example1 s2[3] = {
{10,'a',3.14},
{20,'b',2.68},
{30,'c',9.8}
};
s2[0].ch ='d';
for (int i =0; i <3; i++)
{
printf("%d,%c,%lg\n", s2[i].i, s2[i].ch, s2[i].d);
}
Student s3;
strcpy(s3.name, "张三");
s3.ID = 1000;
strcpy(s3.address, "江苏南京");
printf("%s,%d,%s\n", s3.name, s3.ID, s3.address);
return0;
}
2.结构体所占空间
首先。结构体以占空间最大的变量为单位分配空间。从结构体的第二个变量开始。地址的下标除以该变量的长度余数为零。则存放改变量。否则将该地址空出。直到地址等于单位最大空间地址。再重新分配
举例如下:见图
3.结构体值传递 和地址传递内存处理
3.1值传递如图
3.2地址传递:如下:
- c语言结构体模拟c++对象的方法,并实现this指针
- C语言-结构体+联合体+枚举
- 黑马程序员-------C语言回顾-结构体、枚举和文件
- c语言结构体----初始化bug1
- c语言, 存放结构体的链表
- C语言--结构体
- C语言结构体占用空间内存大小解析
- IOS开发---C语言-⑯结构体数组
- c语言关于结构体字节对齐
- C语言结构体对齐问题详解
- C语言基础(七)字符串 类型重定义 结构体
- 读陈浩的《C语言结构体里的成员数组和指针》总结,零长度数组
- C语言计算结构体占用字节大小总数
- 黑马程序员——c语言复杂数据类型:结构体和枚举,typedef的使用
- C语言中结构体
- c语言typedef 与结构体指针
- 嵌入式系统开发:C语言中的位结构体
- C语言结构体
- C语言(结构体、枚举、typedef)笔记 by STP
- C语言之--结构体内存对齐