最新總結C語言中關於指標等相關理解和使用事宜

來源:互聯網
上載者:User
定義:指標是一個變數,其值是另一個變數的地址,地址代表的是在記憶體中的位置。需要記住的是,陣列變數本身就是一個指標。

地址的類型

地址是存在類型的,是不是感覺好奇怪,指標不是代表一個地址的嗎,地址還有類型嗎?看一個例子:

int    *ip;    /* 一個整型的指標 */double *dp;    /* 一個 double 型的指標 */float  *fp;    /* 一個浮點型的指標 */char   *ch;     /* 一個字元型的指標 */

其實指標永遠都只是一個代表一個地址的十六進位數,所謂的類型,指的是指標指向的變數的類型。

使用指標

如何定義一個指標,前面的例子應該知道了,那麼如何列印那個十六進位的地址是多少和或者指標指向的資料是多少:

//通過&運算子擷取了i的地址並儲存到intP中去int *intP; = &i;printf("intP儲存的地址為:%p,儲存的地址指向的資料為:%d\n", intP, *intP);

指標可以進行運算:++、--、+、-

此外,指標還可以用關係運算子進行比較,如 ==、< 和 >

int intArr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//先定義一個指標執行數組第一個元素int *intArrP = &intArr[0];printf("此時intArrP儲存的地址為:%p,資料為:%d\n", intArrP, *intArrP);//自增一下看看結果(每增加一次,它都將指向下一個整數位置)intArrP++;printf("自增以後intArrP儲存的地址為:%p,資料為:%d\n", intArrP, *intArrP);

指標還可以指向指標

int data = 5201314;int *p1 = &data;int **p2 = &p1;printf("%d\n", data); //都是5201314printf("%d\n", *p1);printf("%d\n", **p2);

結構體和指標

結構體中對指標的使用會稍微特殊一點,主要因為結構體本身的特殊性,想使用結構體中的一個值,一般分為通過結構體自身和指向結構體的指標二種情況,具體看下面的例子:

struct Node{    int val;    };//先建立一個結構體資料struct Node node;node.val = 1;struct Node *nodeP; //建立一個指向剛剛的結構體的指標nodeP = &node;printf("%d\n", nodeP->val);//指向結構體的指標用->printf("%d\n", node.val);//結構體自身用.

相關文章:

C#中關於ActiveMQ的應用詳解

相關視頻:

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.