回覆列表
-
1 # 如同無路可走
-
2 # 使用者2458114238191884
不過這裡存在一個問題,你一個結構體陣列前移的時候,如何判斷有多少個元素要前移呢。。。。
所以我的做法是在結構體裡面定義一個標示符int flag。。。。
當對這個結構體陣列元素賦值時,如a[10].name="KING" 時,那麼就是說下標值為10的元素是存在的,賦完值後,來個a[10].flag=1 來標記一下。。。。
int i=5;
for(int j=i+1;a[j].flag==1;i++,j++)
{
a[i]=a[j];
/* 結構體陣列可以直接這樣子做,它會自動把a[i]裡面的變數等於a[j]裡面對應的變數 */
}
a[i].flag=0;
結構體同樣可以看做一個基本資料型別。刪除結構體陣列中的一個值,就像刪除一個普通陣列中的值一樣的。普通陣列的刪除是將後面的資料向前移動,達到覆蓋掉的效果比如:a[4]要刪除第二個元素。那麼把a[1]=a[2];a[2]=a[3];最後一個不要動,也最好別去訪問它,就相當於把第二個元素刪除了。結構體跟上面類似,但是結構體是你自定義的資料,所以在定義中,你要給它過載賦值符號(也就是=),要不然賦值的過程中會出錯