結構體類型指標做函數參數(C++)

來源:互聯網
上載者:User

因為用到了這塊,所以轉了一篇文章。

原文地址http://blog.sina.com.cn/s/blog_5f777ddd0100chbl.html

設有學生情況登記表,用選擇排序法對該表按從小到大進行排序。

                          學生情況登記表

 學號num  姓名name[8]  性別sex

 

年齡age

 

 成績score
 101  zhang  m  19  95.6
 102  zhao  m  20  89.0
 103  wang  f  18  96.5
 104  shan  m  20  94.0
 105  chen  f  20  76.5
 106  han  f  19  87.0
 107  cui  m  20  78.8
 108  ding  f  18  98.4
 109  chu  m  19  90.0
 110  gao  m  20  97.3

程式碼如下:

#include<iostream>
#include<iomanip>
using namespace std;
struct STUDENT
{
 int num;
 char name[8];
 char sex;
 int age;
 double score;
};
void sort(STUDENT *p[],int n)
{
 int i,j,k;
 struct STUDENT *w;
    for(i=0;i<n-1;i++)
 {
  k=i;
  for(j=i+1;j<n;j++)
   if((*p[j]).score<(*p[k]).score)
    k=j;
   if(k!=i)
   {
    w=p[i];
    p[i]=p[k];
    p[k]=w;
   }
 }
   return;
}

int main()
{
 int i;
    STUDENT stu[10]={{101,"zhang",'m',19,95.6},
 {102,"zhao",'m',20,89.0},{103,"wang",'f',18,96.5},
 {104,"shan",'m',20,94.0},{105,"chen",'f',20,76.5},
 {106,"han",'f',19,87.0},{107,"cui",'m',20,78.8},
 {108,"ding",'f',18,98.4},{109,"chu",'m',19,90.0},
 {110,"gao",'m',20,97.3}};
 struct STUDENT *p[10];
 for(i=0;i<10;i++)
  p[i]=&stu[i];
 cout<<"NO.   NAME    SEX    AGE    SCORE\n";
 cout<<setiosflags(ios::fixed);//浮點數以十進位小數形式輸出
 cout<<setiosflags(ios::left); //輸出資料靠左對齊
 cout<<setprecision(2);        //小數點後兩位
 for(i=0;i<10;i++)
 {
  cout<<setw(8)<<(*p[i]).num<<setw(9)<<(*p[i]).name;
  cout<<setw(8)<<(*p[i]).sex<<setw(8)<<(*p[i]).age;
  cout<<setw(5)<<(*p[i]).score<<endl;
 }
 cout<<endl;
 sort(p,10);
 cout<<"NO.    NAME    SEX    AGE    SCORE\n";
 for(i=0;i<10;i++)
 {
  cout<<setw(8)<<(*p[i]).num<<setw(9)<<(*p[i]).name;
  cout<<setw(8)<<(*p[i]).sex<<setw(8)<<(*p[i]).age;
  cout<<setw(5)<<(*p[i]).score<<endl;
 }
 return 0;

}     

 

編程心得:

  在本程式中,將學生資訊定義為結構體類型變數,在函數的調用時,用結構體類型指標變數做函數參數,由於傳送的是地址,因此,被調函數中改變結構體類型形參所指向的地址中的值也就改變了結構體類型指標實參所指向地址的值,即學生的排序得以改變。本例中,選擇排序法也得到了重要的應用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.