隨筆,結構體
阿新 • • 發佈:2021-01-05
- 定義一個結構體的時候,最後一定要加;
- 可以用 typedef 關鍵字將結構體替代
typedef struct B{
char a[20];
double b;
int c;
}T;
T z={"da za i kunn~",4.5,4};
- 結構體允許直接相互賦值。
struct A{
int x;
double y;
char z[10];
};
//定義
struct A a,b,c,d;
//一般賦值
a.x=1;
a.y=2.5;
strcpy(a.z,"hello");
//互相賦值
b.x=1;
b.y=2.5;
strcpy(b.z,a.z);
//直接copy
c=a;
void print(struct A *a){//(*a).x==a->x;
printf("%d\t%.2lf\t%s\n",(*a).x,(*a).y,(*a).z);
//printf("%d\t%.2lf\t%s\n",a->x,a->y,a->z);
}
void pri(struct A st){
printf("%d\t%.2lf\t%s\n", st.x,st.y,st.z);
};
二者等價。
- 申請一個可變結構體:
malloc的過程就是先申請,再強制型別轉化。實際上是申請了一個可變長度的陣列,不過指向的型別可以隨意轉化。
struct A a;
……
int n;
scanf("%d",n);
//可能的一種情況:
struct A * arr=NULL;
arr=(struct A *)malloc(sizeof(struct A)*n);
//第二種情況:
struct A * arr=malloc(sizeof(struct A)*n);
//arr就是n個結構體陣列。有arr[i]的操作。
……
free(arr) ;
- 自結構體 即 連結串列
如果考試要考有時間了補。。。。咕咕咕~ - だざいさん はぜひ わたし としんちゅう してください。!!!