C語言複雜運算式與指標應用

來源:互聯網
上載者:User

標籤:數組   指標   struct   元素   nbsp   平台   元組   內建類型   文法   

基礎知識

(1)指標數組:int *a[10]    

理解:a和[]先結合,構成數組a[10](同時說明這變數的本質是數組,所以最終應該叫做**數組),緊接著與*號結合說明這個數組中10個元素都是指標,且指向的是int型變數。因此他是一個指標數組。

(2)數組指標:int (*a)[10]

理解:a首先和*號結合表明變數a是一個指標變數(本質就是個指標,所以最終應該叫**指標),緊接著和[]結合,表明這個指標變數指向一個數組,這個數組由10個int類型元素構成。所以名稱為數組指標。

(3)函數指標

譬如函數為 void func(void);那麼函數指標為void (*p)(void);   指標變數p  變數p的類型為void (*)(void);  調用方式為*p  

 

typedef與結構體
(1)結構體在使用時都是先定義結構體類型,再用結構體類型去定義變數。
(2)C語言文法規定,結構體類型使用時必須是struct 結構體類型名 結構體變數名;這樣的方式來定義變數。
(3)使用typedef一次定義2個類型,分別是結構體變數類型,和結構體變數指標類型。

typedef struct teacher
{
char name[20];
int age;
int mager;
}teacher, *pTeacher;

typedef與const
(1)typedef int *PINT;const PINT p2; 相當於是int *const p2;
(2)typedef int *PINT;PINT const p2; 相當於是int *const p2;
(3)如果確實想得到const int *p;這種效果,只能typedef const int *CPINT; CPINT p1;

 

使用typedef的重要意義(2個:簡化類型、創造平台無關類型)
(1)簡化類型的描述。
char *(*)(char *, char *);typedef char *(*pFunc)(char *, char *);
(2)很多編程體系下,人們傾向於不使用int、double等C語言內建類型,因為這些類型本身和平台是相關的(譬如int在16位機器上是16位的,在32位機器上就是32位的)。為瞭解決這個問題,很多程式使用自訂的中間類型來做緩衝。譬如linux核心中大量使用了這種技術.
核心中先定義:typedef int size_t; 然後在特定的編碼需要下用size_t來替代int(譬如可能還有typedef int len_t)
(3)STM32的庫中全部使用了自訂類型,譬如typedef volatile unsigned int vu32;

 

二重指標

二重指標用來指向一重指標。

二維數組的記憶體映像
(1)一維數組在記憶體中是連續分布的多個記憶體單元組成的,而二維數組在記憶體中也是連續分布的多個記憶體單元組成的。
(1)從記憶體角度來看,一維數組和二維數組沒有本質差別。
(2)二維數組int a[2][5]和一維數組int b[10]其實沒有任何本質差別。我們可以把兩者的同一單元的對應關係寫下來。
a[0][0]   a[0][1]    a[0][4]   a[1][0]  a[1][1]   a[1][4]
b[0]     b[1]     b[4]    b[5]     b[6]     b[9]

 

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.