定义:
struct 结构体类型名
{
字段声明;
};
在定义结构体类型时,字段名可与程序中的变量名相同,在不同的结构体中也可以有相同的字段名,而不会发生混淆
结构体的成员的类型可以是任意类型,可以是整型,可以是整型、实型、也可以是数组,当然也可以是其他结构体类型。
事实上,一旦定义了一个结构体类型的变量,系统在分配内存时就会分配一块连续的空间,一次存放它的每一个分量,这块空间总的名字就是该变量的名字,每一小块还有自己的名字,即字段名;
定义结构体:
Student stu1; //Student是结构体类型名
stu1.chinese; //访问stu1中的chinese的字段
与普通变量一样,结构体除了可以通过变量名直接访问外也可以通过指针间接访问,指针结构体的指针定义与普通指针定义一样:
结构体类型名 *指针变量名;
也可以在定义结构体类型时直接定义指针变量:
struct 结构体类型吗
{
字段声明;
} *结构体指针;
Student stu1,*sp=&stu1;
sp=new Student;
访问字段名方法(2种):
(*sp).name;
sp->name;
结构体数组:
Student stuArray[10];
stuArray[1].name;
实例:
#include<iostream>
#include<cmath>
using namespace std;
struct pointT
{
double x,y;
};
pointT setPoint(double x,double y)
{
pointT p;
p.x=x;
p.y=y;
return p;
}
double getX(pointT &p)
{
return p.x;
}
double getY(pointT &p)
{
return p.y;
}
void showPoint(const pointT &p)
{
cout<<"("<<p.x<<","<<p.y<<")";
}
double distancePoint(const pointT &p1,const pointT &p2)
{
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
int main(void)
{
pointT p1,p2;
p1=setPoint(1,1);
p2=setPoint(2,2);
cout<<getX(p1)<<" "<<getY(p2)<<endl;
showPoint(p1);
cout<<" - >";
showPoint(p2);
cout<<" = "<<distancePoint(p1,p2)<<endl;
return 0;
}
结果:
1 2
(1,1) - >(2,2) = 1.41421
请按任意键继续. . .
简单链表实例:
#include<iostream>
#include<cmath>
using namespace std;
struct linkRec
{
int data;
linkRec *next;
};
int main(void)
{
int x;
linkRec *head,*p,*rear;
head=rear=new linkRec;
while(true)
{
cin>>x;
if(x==0)
break;
p=new linkRec;
p->data=x;
rear->next=p;
rear=p;
}
rear->next=NULL;
cout<<"链表的内容为:"<<endl;
p=head->next;
while(p!=NULL)
{
cout<<p->data<<'\t';
p=p->next;
}
cout<<endl;
return 0;
}
结果:
1
2
3
4
0
链表的内容为:
1 2 3 4
请按任意键继续. . .