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地址传递:如下: