#include <iostream>
#include <malloc.h>
#include <stdio.h>
using namespace std;
struct stu
{
int *a;
int *b;
};
int main()
{
//struct stu *s=new stu[10];
//struct stu s=new stu;
stu s = (stu*)malloc(sizeof(stu)+2);
//struct stu s;
struct stu s1;//
for (int i=0; i<4; i++)
{
cin>>s.a[i]>>s.b[i];
cout<<s.a[i]<<" "<<s.b[i]<<endl;
}
//delete []s;
while (1);
return 0;
}
#define N 10005
struct stu
{
int a;
int b;
};
struct stu s[N];
首先,我们搞清几个概念,结构体名,结构体变量,结构体成员
结构体名 正如这样 struct stu s/这里stu 是结构体名,s是结构体变量了,那么里面的a,b都是他的成员了;
//在c++里面,我们发现笔者很喜欢用typedef;例如:
typedef struct stu
{
int a;
int b;
}s1,s2;
那么 s1,s2是什么意思呢? 大家都知道 typedef的作用的,顾名思义,我们的s1,s2,就相当 stu 他是结构体名,不是结构体变量,要运用结构体 我们就要定义一个结构体变量;
//像这样
s1 ss;
s2 sss;
接着 问题就来了,结构体成员是否可以和 结构体变量重名呢? 结构体名是否可以和结构体变量名一样呢???
struct stu
{
int a;
int b;
};
struct stu a;//struct stu stu;
结构体,在C++中,是一个类而已。所以,不管是类,还是结构体,它产生的对象名,其实是可以与成员同名的。
再试下,
struct stu
{
int a,b;
}stu;//这时stu已经变成结构体变量了
但是下面的代码又没解释,只能说c很强大啊,下面的代码说明我们还是少重名,以免发生错误
#include <iostream>
#include <stdio.h>
using namespace std;
struct stu
{
int a;
int b;
};
int main()
{
struct stu stu[100];
struct stu s1;//
for (int i=0; i<4; i++)
{
scanf("%d%d",&stu[i].a,&s1.a);
printf("%d %d ",stu[i].a,s1.a);
}
while (1);
return 0;
}
下面的是结构体指针的两种定义方式:
1.
#include <iostream>
#include <stdio.h>
using namespace std;
struct stu
{
int a;
int b;
};
int main()
{
struct stu *s=new stu[10];
struct stu s1;//
for (int i=0; i<4; i++)
{
cin>>s[i].a>>s[i].b;
cout<<s[i].a<<" "<<s[i].b<<endl;
}
delete []s;
while (1);
return 0;
}
2.