#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 10005struct 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.
c/c++结构体几种定义情况总汇
最新推荐文章于 2024-07-20 15:09:27 发布