C語言學習--結構體

來源:互聯網
上載者:User

標籤:

結構體定義三種方式:

      1 #include<stdio.h>      2 //第一種定義方法      3 struct point {      4         int x;      5         int y;      6 };      7 struct point p1,p2;      8       9 //第二種定義方法     10 struct {     11         int x;     12         int y;     13 } p1,p2;     14      15 //第三種定義方法     16 struct {     17         int x;     18         int y;     19 } p1,p2;

這三種方法,對於第一和第三種,都聲明了結構point。但是第二種沒有,只聲明了兩個變數。

下面的小例子,說明結構類型的兩種初始化方法。

      1 #include<stdio.h>      2 struct date {      3         int month;      4         int day;      5         int year;      6 };      7 int main()      8 {      9         struct date today = {2,18,2015};    //結構的初始化,方法1;同數組初始化。     10         struct date thismonth = {.month = 3,.year = 2015};    //結構的初始化,方法2;指定對應的結構成員初始化。     11         printf("Todays date is %i-%i-%i\n",today.day,today.month,today.year)     12         printf("This month date is %i-%i-%i\n",thismonth.month = 2,thismonth.year = 2015}     13         return 0;     14 };

結構成員:

  結構和數組有點像,存取方法不同。數組是【】訪問裡面的元素;結構是用.來訪問結構成員。

結構運算:

  要訪問整個結構,可以直接存取結構變數的名字。

  對於整個結構可以賦值,取地址,可以傳遞給函數。

  p1 = struct point{5,10};  //相當於p1.x = 5,p1.y = 10

  p1  = p2;

結構指標:

  結構和數組不一樣,數組是指標,可以直接取地址。對結構成員取地址,必須用&。

  struct date *pdate = &today;

結構作為參數函數:

  int numofdays(struct date d);

  整個結構可以作為參數的值傳入函數。

  這個時候是在函數內部建立一個結構變數,並且賦值調用者結構的值。

  也可以返回一個結構。和數組不同。

 

輸入結構:

  scanf函數只能讀入一個變數。怎麼讀入一個結構呢?

  可以調用一個函數來實現。注意:C語言的函數調用是傳值的。

  所以在函數中的結構變數p和main函數中的結構變數p是不同的。  

  在函數讀入p之後沒有任何值返回給main,所以主函數結構值不變。

解決方案:

  在函數內部建立一個臨時的結構變數p,返回一個結構變數。

指向結構的指標:  

      1 #include<stdio.h>      2 struct date {      3         int month;      4         int day;      5         int year;      6 } myday;      7       8 struct date *p = &myday;      9      10 (*p).month = 12;     11 p->month = 12;

用->表示指標所指結構變數中成員。

 

  

C語言學習--結構體

聯繫我們

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