指標數組、數組指標、指標函數、函數指標的簡介

來源:互聯網
上載者:User

標籤:存在   size   strong   字串   []   div   維數   ack   地址   

一.指標數組:本質是一個數組,裡面存放的元素是指標。比如:char *nums[10];定義了一個名稱為num 長度為10的存放元素為:指向char類型資料的指標變數的數組。數組中的每一個元素都是一個指標,每一個指標都能夠指向一個字串。

 

在程式中舉例:

int main(int argc, const char * argv[]) {

   // 指標數組就是用來表示字串的數組

   char *strs[10];

   // 聲明了一個數組, 同意儲存 10 個字串

   // 每個字串

   strs[0] = "1234";

   strs[1] = "你好";

   // ...

   strs[9] = "hello iOS";

   return 0;

}

指標數組和二維數組的差別:

1.    二維數組賦值必須使用for迴圈或者strcpy()函數進行賦值,而指標數組能夠直接賦值。

如。arr1[]=”qazwsx”;

2.    二維數組賦值之後能夠更改。可是指標數組賦值之後不能更改。

數組指標:本質是一個指標。指向一個數組的指標變數(變數中存放的地址就數組的地址。

)

3.    數組的長度一旦定義後就確定,分配的記憶體也被確定不可改動。假設字串分配到數組之後長度太小就會浪費空間,假設太大,字串就盛不下,可是指標不會。

例如以:


 

二.數組指標:本質是一個指標。指向一個規定長度的數組。

定義:如 int (*p)[10]; 

 int 指的是指標指向的數組的元素的類型。

(*p)指的是定義一個名稱是p的指標變數名。[10]指的是指標指向的數組的長度。此時定義了一個指標變數 p, 該變數指向一個長度為 10 的元素為 int 類型的數組。

比如:

int main(int argc, const char * argv[])

{

    int(*p)[10]="1 2 3 4 5 6 7 8 9 0";

printf("%s",*p);

return 0;

}

 

拓展:int *(*p)[10]。指的是定義了一個指標型變數p,指向一個長度為10存放指標類型元素的資料。

 

 

 

 

 

 

 

 

三.指標函數:本質是一個函數。

傳回值為指標。

Int *function(參數)

{

…………

}

對於這樣的函數。一定要慎用。舉個範例。給出一段同事之前出現錯誤的代碼:

int *func() {

    intarr[] = {1,2,3,4};

return arr;


 

}//這是非常危急的做法,在這裡開闢的函數存在棧裡面。函數結束後記憶體收回。非常easy出 bug。除非手動開闢記憶體,或者開發人員對當前記憶體分布情況比較深入。

 

 

四.函數指標:本質上是一個指標。指向函數的指標。也就是說該指標變數存放的是函數的地址。

核心意義:使用一個變數儲存一個函數,然後利用變數調用函數

文法:

比如定義一個有兩個參數,一個int傳回值的函數:int strcmp(char *, char *)。

定義它的函數指標:int (*p)(char*, char *);僅僅須要將函數名稱去掉換上(*p)就能夠了。

指標數組、數組指標、指標函數、函數指標的簡介

聯繫我們

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