IOS學習之路-- 指標&宏函數

來源:互聯網
上載者:User

標籤:style   blog   color   使用   os   檔案   

  • 如果*p被()包住,說明指標變數p將來指向的是函數
 //聲明一個指標變數    //int (*p)(int, int) = sum;    int (*p)(int, int);    p = sum;        // 如果*p被()包住,說明指標變數p將來指向的是函數        // 最左邊的void說明p指向的函數沒有傳回值    // 最右邊的()說明p指向的函數沒有形參    void (*p)();        // 函數名test就是test函數的地址    // 將test函數的地址賦值給了指標變數p    // 指標變數p成功指向了test函數    p = test;        // 利用指標變數p間接調用了test函數    //(*p)();        //test();    p();
  • 結構體佔用的空間大小

預設情況下,一個結構體變數所佔有的儲存空間是所有成員的總和。

sizeof計算的結構體所佔用儲存空間時,返回的值必須是最大成員的倍數。

  •  結構體的省略寫法

  省略了結構體的名稱,這種方法沒有重用性。

  在結構圖的最後加入的內容是  同時定義的變數。

    struct    {        double width;        double height;    } s;

 

  注意: 如果想給結構體使用{}的方式一次性賦值,只能在定義變數的同事進行。

  •  結構體作為函數參數時,只是成員的值傳遞(修改函數內部的結構體,並不影響外面的結構體)

 

struct Person {    int age;};// 這種方式是值傳遞, 不會真的改變nochange的值void changePersonWithAge1(struct Person nochange) {    nochange.age = 100;}// 這種傳遞的是指標,指標指向同一個內容,可以真正改變void changePersonWithAge2(struct Person *change) {//    (*change).age = 100;    change->age = 100;  // 等價於上面那行。}int main(){    struct Person p1 = {5};//    changePersonWithAge1(p1);    changePersonWithAge2(&p1);  // 引用傳遞,要傳遞指標        printf("%d\n", p1.age);}
  •  宏定義:

  #define 宏名 值

  #undef 宏名  

  作用:宏替換,在翻譯之前,將代碼中的所有宏名都替換成對應的值。

  宏名最好都用大寫,跟函數區分開。可以使用在任何地方(程式碼片段中,頭部,任何地方)

// 帶參數的宏定義// 宏替換隻是純粹的文本替換,把左邊的宏換成右邊的東西,並不會進行任何運算// 參數和結構都必須用()包住#define PING_FANG(x)  ((x)*(x))
  •  預先處理指令

    不能遞迴包含: 自己包含自己,a.h include a.h

    不能交叉包含:a.h incldue b.h, b.h include a.h

    防止.h的檔案內容被包含多次。用預先處理命令。  檔案名稱用A_H的方式來定義。

 #ifndef 檔案名稱 #define 檔案名稱  ..檔案內容..  #endif
  •  typedef 起別名  

  typedef int Myint

  typedef char * String1 

struct Person {    int age;};// 給結構體類型起個別名 :Stutypedef struct Person Student;// 此結構類似與上面的內容。 是上面兩行的縮寫typedef struct Dog {    int age} WangCai;
  •  指標的使用範圍

  需要間接的修改某個變數的值。

聯繫我們

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