青岛网站建设青岛博采网络,深圳推广公司是什么,wordpress博客伪静态,奉贤做网站建设目录 结构结构的声明结构成员的类型结构体变量的定义和初始化结构体成员的访问结构体传参 结构 结构是一些值的集合#xff0c;这些值被称为成员变量。之前说过数组是相同类型元素的集合。结构的每个成员可以是不同类型的变量#xff0c;当然也可以是相同类型的。 我们在生活… 目录 结构结构的声明结构成员的类型结构体变量的定义和初始化结构体成员的访问结构体传参 结构 结构是一些值的集合这些值被称为成员变量。之前说过数组是相同类型元素的集合。结构的每个成员可以是不同类型的变量当然也可以是相同类型的。 我们在生活中会用姓名、性别、年龄、身份证号来描述人用书名、作者、出版社、书号等等来描述书。像这些复杂的对象就需要用结构体来描述。 结构的声明
struct 名称
{成员列表一个或者多个;
}变量列表;比如我们用结构体来描述一个学生假设需要用到姓名性别和年龄。 #includestdio.hstruct Stu
{//成员变量描述结构体对象的相关属性char name[20];char sex[5];int age;
};int main()
{//int a;struct Stu a; //struct Stu是类型return 0;
}struct Stu
{//成员变量描述结构体对象的相关属性char name[20];char sex[5];int age;
}a,b,c; //这里的abc是结构体变量,属于全局变量typedef struct Stu
{//成员变量描述结构体对象的相关属性char name[20];char sex[5];int age;
}Stu; //这里的Stu相当于把struct Stu重命名为Stu int main()
{//struct Stu a;Stu a; //struct Stu是类型。现在由Stu替代。没有typedef,struct不能省略。return 0;
}结构成员的类型 结构成员可以是标量、数组、指针或者其他结构体。 struct A
{int a; char arr[10]; //数组int* p; //指针
};struct B
{int b;struct A b; //其他结构体
};结构体变量的定义和初始化
//定义
//第一种方法
struct A
{int x;int y;
}a1; //定义a1//第二种方法
struct A a2; //定义结构体变量a2//初始化1
struct A a3 {3,5};//定义变量的同时初始化。//初始化2
struct A
{int x;int y;
}a4 {3,5};结构体成员的访问 通过点操作符访问 //1
#includestdio.hstruct A
{int x;int y;
}a4 {3,5};int main()
{printf(%d %d\n, a4.x, a4.y);return 0;
}//2
#includestdio.hstruct Stu
{char name[10];char sex[5];int age;
};int main()
{struct Stu a { 小刘,男,19};printf(%s %s %d\n, a.name, a.sex, a.age);return 0;
} 有时候我们得到的不是结构体变量而是一个指向结构体的指针 #includestdio.h
struct Stu
{char name[10];char sex[5];int age;
};void Out(struct Stu* pa)
{printf(%s %s %d\n, (*pa).name, (*pa).sex, (*pa).age);printf(%s %s %d\n, pa-name, pa-sex, pa-age);//使用结构体指针访问指向对象的成员
}
int main()
{struct Stu a { 小刘, 男, 19 };Out(a);return 0;
}结构体传参
#includestdio.hstruct A
{int arr[100];int num;
}a { {1,2,3} , 5};//结构体传参
void Out1(struct A a)
{printf(%d\n, a.num);
}//结构体地址传参
void Out2(struct A* pa)
{printf(%d\n, pa-num);
}int main()
{Out1(a); //方法1Out2(a); //方法2return 0;
}首选方法2 原因函数传参的时候参数是需要压栈的。如果传递的结构体对象的时候结构体太大的话参数压栈的系统开销会比较大很浪费内存会导致性能下降。 所以结构体传参的时候要传结构体的地址