结构体全局变量,局部变量
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
struct Stu {
char name[20];
char tele[12];
char sex[10];
int age;
}s4, s5, s6;//s4,s5,s6 - 全局变量
struct Stu s3;//全局变量
int main() {
struct Stu s1;
struct Stu s2;//s1,s2 - 局部变量
return 0;
}
结构体嵌套初始化
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
struct T
{
double weight;
short age;
};
struct S {
char c;
struct T st;
int a;
double d;
char arr[20];
};
int main() {
struct S s = { 'c',{55.6,30},100,3.14,"hello world" };
printf("%c %d %lf %s\n", s.c, s.a, s.d, s.arr);
printf("%lf %d\n", s.st.weight,s.st.age);
return 0;
}
c 100 3.140000 hello world
55.600000 30
结构体内存对齐
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//结构体内存对齐
struct S1 {
char c1;//1
char c2;//1
//2
int a;//4
};
struct S2 {
char c1;//1
//3
int a;//4
char c2;//1
//3
};
struct S3 {
double d;//8
char c;//1
int a;//4
//3
};
struct S4 {
char c1;
struct S3 s3;
double d;
};
int main() {
struct S1 s1 = { 0 };
printf("%d\n", sizeof(s1));//8
struct S2 s2 = { 0 };
printf("%d\n", sizeof(s2));//12
struct S3 s3 = { 0 };
printf("%d\n", sizeof(s3));//16
struct S4 s4 = { 0 };
printf("%d\n", sizeof(s4));//32
}
8
12
16
32
结构体传参
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//结构体传参
struct S {
int a;
char c;
double d;
};
void Init(struct S* ps) {
ps->a = 100;
ps->c = 'w';
ps->d = 3.14;
}
//传值
void Print1(struct S tmp) {
printf("%d %c %lf\n", tmp.a, tmp.c, tmp.d);
}
//传址
void Print2(struct S* ps) {
printf("%d %c %lf\n", ps->a, ps->c, ps->d);
}
int main() {
struct S s = { 0 };
Init(&s);
Print1(s);//100 w 3.140000
Print2(&s);//100 w 3.140000
}
100 w 3.140000
100 w 3.140000