#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.