1 struct studentInfo{ 2 int id; 3 char gender; 4 //默认生成的构造函数 5 studentInfo(){ 6 } 7 };
若想要手动提供id和gender初始化参数
1 struct studentInfo{ 2 int id; 3 char gender; 4 5 studentInfo(int _id,char _gender){ 6 //赋值 7 id=_id; 8 gender=_gender; 9 } 10 };
或者:
1 struct studentInfo{ 2 int id; 3 char gender; 4 5 studentInfo(int _id,char _gender):id(_id),gender(_gender){ 6 } 7 //赋值 8 };
这样可以直接在需要时对结构体变量赋值:
1 studentInfostu=studentInfo(10086,'M');
只要参数个数和类型不完全相同可以定义多个构造函数
1 struct studentInfo{ 2 int id; 3 char gender; 4 //用以不初始化就定义结构体变量 5 studentInfo() { 6 } 7 //只初始化 gender 8 studentInfo(char _gender){ 9 } 10 //同时初始化id和gender 11 studentInfo(int _id,char _gender){ 12 id=_id; 13 gender=_gender; 14 } 15 16 };
应用实例:结构体Point 用于存放平面点的坐标x,y
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include <stdio.h> 2 3 struct Point{ 4 int x,y; 5 //用以不经初始化地定义pt[10] 6 Point(){} 7 //用以提供x和y的初始化 8 Point(int _x,int _y):x(_x),y(_y){} 9 }pt[10]; 10 11 12 13 int main(){ 14 int num=0; 15 int i,j; 16 for(i=1;i<=3;i++){ 17 for(j=1;j<=3;j+=) 18 { 19 pt[num++]=Point(i,j) ;//直接使用构造函数 20 } 21 } 22 for(int i=0;i<num;i++) { 23 printf("%d,%d\n",pt[i].x,pt[i].y); 24 } 25 return 0; 26 } 27