程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> iOS開發入門 ☞ C語言(高級指針,判斷類型)

iOS開發入門 ☞ C語言(高級指針,判斷類型)

編輯:關於C++

iOS開發入門 ☞ C語言(高級指針,判斷類型)。本站提示廣大學習愛好者:(iOS開發入門 ☞ C語言(高級指針,判斷類型))文章只能為提供參考,不一定能成為您想要的結果。以下是iOS開發入門 ☞ C語言(高級指針,判斷類型)正文


高級指針

  高級指針:包括雙指針(二級指針)、void指針、函數指針。

 1. 雙指針

  雙指針(二級指針),是指針的指針。

   

2. void指針  

  void指針:萬能指針,代表任意類型的指針。

  malloc分配堆內存時,由於無法確定內存存儲類型,所以可以使用void*代表任意指針類型。

  

3. 函數指針
  • 函數指針是指向函數的指針變量,每個函數都有一個入口地址,指針變量中保存函數的入口地址
  • 每一個函數都有一個入口地址,該入口地址就是函數指針所指向的地址。有了指向函數的指針變量後,可用該指針變量調用函數,就如同用指針變量可引用其他類型變量一樣。
  • 函數指針有兩個用途:調用函數和做函數的參數。

 

  函數指針的聲明方法為:

返回值類型 (*指針變量名) ([形參列表]);

 

  函數指針(指向函數的指針)的定義格式:

  

  函數也會占用一塊存儲空間,因為函數也會占用一塊存儲空間所以函數也有自己的地址

  函數的地址保存在函數名中,函數名就是函數的地址 == 數組名就是數組的地址

  數組名就是指向數組第一個元素的常量指針,函數名也是指向函數第一條指令的常量指針。

 

函數指針的語法格式:

  

  

函數指針的優缺點:

  • 優點:是對於通用函數中要涉用到另一個函數,但函數名稱未定,是讓用戶編的,此時需要使用函數指針。

如,通用定積分計算,被計算函數是待定的,是由調用者確定的函數

如,通用排序函數也是,比較函數與交換函數也是讓用戶自己編的

  • 缺點:是由於函數指針指向的函數未定,容易導致程序崩潰。

  

 

判斷類型

  怎麼判斷類型:從右往左邊看,沒有括號就看最右邊是什麼類型就是什麼類型;有括號,括號裡是什麼類型就是什麼類型。

 

  • int *a[10]  指針數組 
    • []的優先級比*高,a代表一個數組,其數組元素存儲的類型是int *;
    • a的值代表數組首元素a[0]的地址值,是一個指針,即*a=a[0],只是需要注意的是這個指針類型為const,即不能改變的。
  • int (*a)[10] 數組指針
    • a代表一個數組指針,它指向一個int [5]型的數組;因為a的類型,所以a++後,它會偏移sizeof(int)*5 個字節。
  • (int)有參數就是函數

    •  

      int (*a)(int)  函數指針

    •  

      int *a (int)   指針函數

  函數和方法的區別:函數是大家的,沒有類。方法是類的,不是所有人都能用。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved