1. 程式人生 > >結構體和連結串列中陣列和指標不同表達形式

結構體和連結串列中陣列和指標不同表達形式

int getMaxLengthOfItems(MEC_MENU *menu,int count){     int i;     int maxLen = strlen(menu[0].item);

    for(i = 0; i < count; i++){ //        if(strlen(menu[i].item) > (unsigned int)maxLen){         //計算每個item的長度並找出其最大長度 //            maxLen = strlen(menu[i].item);             if(strlen((menu+i)->item

) > (unsigned int)maxLen){             maxLen = strlen((menu+i)->item);             }         //經驗證,兩種方式都正確  老師都是用陣列形式         //(menu+i)->item   <=>    menu[i].item            //類似例子見部落格 https://blog.csdn.net/weixin_42072280/article/details/82634114     }

    return maxLen; }

void showStudentsInformation(struct STI *s, int Cnt) {     int i;

    printf("\n當前學生資訊共%d人,資訊分別如下:\n", Cnt);         printf("%8s %20s %4s %4s %4s\n", "學號",  "姓名", "性別", "年紀", "分數");  //對齊形式          for(i = 0; i < Cnt; i++)     {         printf("%8s %20s %4s %4d %.1lf\n", (s+i)->id, (s+i)->name, ((s+i)->sex

== 'm' ? "男" : "女"), (s+i)->age, (s+i)->score);   //自己方法正確形式

        //printf("%8s %20s %4s %4d %.1lf\n", s[i].id, s[i].name, (s[i].sex == 'm' ? "男" : "女"), s[i].age, s[i].score);  //老師正確形式         //printf("%8s %20s %4s %4d %.1lf\n", s->id, s->name, (s->sex == 'm' ? "男" : "女"), s->age, s->score);    //自己方法錯誤形式         //*s = s[i++];

        //錯誤原因:指標一直指向同一個陣列,故輸出只能是同一個陣列,沒有進行指標的移位

        //和老師方法的區別:老師是用陣列表示的,而自己是用指標方式表示的     } }