C語言指標必知必會

來源:互聯網
上載者:User

標籤:c語言   指標   

每個指標都有一個值

指標是一個非負的整數值,表示儲存的地址.

指標必定有個類型

這個類型指的是指標指向這個地址單元(連續的地址空間)存放的資料類型.void表示泛型,可以轉換成任何類型.

用”*”可以聲明一個指標變數, 也可以間接引用指標.

用(int *)p來聲明p是指標, 類型為int. 通常情況下括弧可以省略. 用*p解引用來擷取指標p指向的值.

用&擷取一個變數的地址

&只能放在在變數的前面, 即只能操作左值.

可以改變一個指標的類型,但是指標的值沒有變

指標的類型和指標的值應該分開來看待.

指標和數組密切相關

數組名就是一個指標, 只不過數組名是一個不能改變的指標, 不能做自增和自減移動.

指標可以指向函數

函數名就是一個指標變數, 只是C語言把它簡化了, 不需要顯示聲明函數為指標. 既然函數名是一個指標變數, 我們就可以把函數名當做右值賦值給另一個函數指標. 可實現回呼函數(callback).

執行個體
#include<stdio.h>void swap(int *x, int *y){    int t = *x;    *x = *y;    *y = t;}int main(){    //聲明指標    int *p;    int x = 13;    p = &x;//擷取變數的儲存地址    printf("The value of p is: %d\n", p);    printf("The size of p is: %d\n", sizeof(p));    //指標類型轉換    char *q = (char *)p;    printf("The value of q is: %d\n", q);//返回的值和p一樣    printf("The value of *q is: %d\n", *q);//傳回值為13,說明系統按小端序存放資料    //聲明一個函數指標fswap, 函數簽名與swap一樣.    void (*fswap)(int *, int *);    fswap = swap;//函數指標fswap賦值    int a = 3, b = 5;    //函數指標調用    fswap(&a, &b);    printf("after swap: a is %d, b is %d\n", a, b);}

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.