數組、結構、指標混用執行個體及疑難解決過程

來源:互聯網
上載者:User

#include <stdio.h>

#define MAX 4

//定義part結構
struct part{
 short member;
 char name[10];
}data[MAX] = {1,"smith",
     2,"jones",
     3,"adans",
     4,"wilson"
   };

//定義指向結構的指標
struct part *pPart;

int main(void)
{
 int count;
//給結構指標賦值,把數組的第一個元素的地址賦給結構指標
 pPart = data;
 for(count = 0; count < MAX; count++)
 {
    //顯示指標指向的地址,指標指向結構的成員
  printf("At Address %d : %d %s/n",pPart,pPart->member,pPart->name);

   /* pPart++等價於pPart = pPart + sizeof(結構),因為這裡指標指向的是結構,此時pPart++指向data[1]
   count = 1時pPart++指向的是data[2],count = 2時pPart++指向的是data[3],count = 3時pPart++指向的 
   是data[3] */
  pPart++;
 }
 return 0;
}

用VC6.0編譯後,在我的機器上,運行結果為:
At Address 4336176 : 1 smith
At Address 4336188 : 2 jones
At Address 4336200 : 3 adans
At Address 4336212 : 4 wilson

    我給這段代碼加了下注釋,請各位看看有沒有理解不對的地方。
    另外,有一處我不理解,就是這個data[MAX]初始化不明白,MAX為4,也就是說,data[0]、data[1]、data[2]、data[3]都是結構,那怎麼初始化的時候是這樣:
    {1,"smith", 
     2,"jones",
     3,"adans",
     4,"wilson"
   };
這樣是data[0]、data[1]、data[2]、data[3]初始化都是這些值,還是什嗎?
這個結構:
struct part{
 short member;
 char name[10];
}
不是只有兩個成員嗎?

問題已經解決,解決過程如下:
*******************************************************************
foochow(恰似你的溫柔)
數組在記憶體中連續分配空間的
{1,"smith",
     2,"jones",
     3,"adans",
     4,"wilson"
   };
這個就是給結構data[0]、data[1]、data[2]、data[3]初始化

*******************************************************************
 kgdiwss(∮明天去要飯)
你的意思是:
data[MAX] = {1,"smith",
     2,"jones",
     3,"adans",
     4,"wilson"
   };

等價於:

data[0] = {1,"smith"};
data[1] = {2,"jones"};
data[2] = {3,"adans"};
data[3] = {4,"wilson"};

*******************************************************************
 foochow(恰似你的溫柔)
對,因為數組空間是連續的所以可以連續賦值

*******************************************************************
 megaboy(此人已登出)
不過這種編程風格不可取,還是用{}分開來程式更清晰:
struct part{
 short member;
 char name[10];
}data[MAX] = {
     {1,"smith"},
     {2,"jones"},
     {3,"adans"},
     {4,"wilson"}
   };
*******************************************************************

感謝兩位朋友的協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.