訂閱
糾錯
加入自媒體

一文弄懂指針類型!

2021-04-20 14:44
一口Linux
關注

0.問題

知乎上回答了一個粉絲問題,

結果這兄弟又連續(xù)問了幾個問題:

好吧,幫人幫到底,送佛送到西!給你講徹底點吧!

1. int va;

這是一個整型變量,32位CPU的話,占有32個bite

2. int *va;

這是一個整型指針變量,用于存放一個整型變量的地址,

3. int **va;

這是一個整型的二級指針,用于存放一個內存的地址,該地址對應的內存中存放了另一個整型變量的地址

比如:

int va=0x12345678; 

int *pva = &va;

int **ppva = &pva;

4. int *va[3]

這是一個數組,該數組里面的成員是整型的指針,分別指向int型的內存

5. int (*va)[3]

這是一個指針,指向一個int型數組

注意,該地址類型是int [3]型,他的值是0x40004000,

值為0x40004000的符號還有:

a   &a[0]

但是他倆的類型和va不一樣,

6. void *va(int)

這是一個函數

函數的參數是int,

返回值是void *

void (*va)(int)這是一個指針,指向一個函數,

該函數形參是int

返回值是void

舉例

void (*va)(int);
void func(int num)

  printf("一口Linux %d",num);

va = func ;
//調用
main()

  (*va)(6);

注意:函數名也是一個地址

7. int (*va[3])(int)

結合方式:

va先和[3]結合,說明va是一個數組va[3] 外面*結合,所以數組元素是一個指針假定(*va[3])是X,外面是 int (X)(int),所以指針是指向函數的函數的形參是是int型,返回值是int型

- END -


聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    掃碼關注公眾號
    OFweek人工智能網
    獲取更多精彩內容
    文章糾錯
    x
    *文字標題:
    *糾錯內容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網安備 44030502002758號