指標函式:是指帶指標的函式,本身是函式,只是返回值是某乙個型別的指標。
int
*fun
(int x)
;
函式指標:指向函式的指標變數,即本質是乙個指標變數。
int
(*fun)
(int x)
;
void
(*fun)()
;//定義函式指標
void
test()
;int
main()
void
test()
typedef
typedef:為c語言的關鍵字,作用是給變數乙個易記且意義明確的新名字,另乙個是簡化一些比較複雜的型別宣告。
作用域:
如果放在所有函式之外,它的作用域就是從它定義開始直到檔案尾;
如果放在某個函式內,定義域就是從定義開始直到該函式結尾;
對指標的操作:
typedef
int* int;
int a,b;
a跟b都是 int* 型別
typedef使用:
int*(
*a[5])
(int
,char);
//pfun是我們建的乙個型別別名
typedef
int*
(*pfun)
(int
,char);
//使用定義的新型別來宣告物件,等價於int* (*a[5])(int, char);
pfun a[5]
;
解讀:int *(*fun)(int, char);
fun 首先找到變數名
(*fun) 這是指標
(*fun)(int, char) 函式指標
int *(*fun)(int, char) 返回型別為int * 型的函式指標
typedef
char
*pstr;
char string[4]
="abc"
;const
char
*p1=string;
const pstr p2=string;
p1++
;//正確
p2++
;//錯誤
const pstr p2 相當與 char * const p2。
define
#define:是c語言中定義的語法,是預處理指令。不只是可以為型別取別名,還可以定義常量、變數、編譯開關等。
#define pi 3.1415926
程式中的:area=pirr 會替換為3.1415926rr
如果你把#define語句中的數字9 寫成字母g 預處理也照樣帶入。
(1)巨集名一般用大寫
(2)使用巨集可提高程式的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如:陣列大小常用巨集定義
(3)預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。
(4)巨集定義末尾不加分號;
(5)巨集定義寫在函式的花括號外邊,作用域為其後的程式,通常在檔案的最開頭。
(6)可以用#undef命令終止巨集定義的作用域
(7)巨集定義可以巢狀
(8)字串" "中永遠不包含巨集
(9)巨集定義不分配記憶體,變數定義分配記憶體。
作用域:
不管是在某個函式內,還是在所有函式之外,作用域都是從定義開始直到整個檔案結尾。
對指標的操作:
#define int int*
int a,b;
a是 int* 型別,b是int型別
指標常量
int
*const p //指標常量
例:
int a,b;
int*
const p=
&a;//指標常量
*p=9
;//操作成功,可以改變指標指向變數的內容
p=&b;
//操作錯誤,不能改變指標的指向
常量指標
const
int*p //常量指標
例:
int a,b;
const
int*p=
&a;//常量指標
*p=9
;//操作錯誤,不能改變指標指向變數的內容
p=&b;
//操作成功,可以改變指標的指向
const 跟 int* 關係可以理解為:左定值,右定向
指標常量,指標不能變。
常量指標,變數不能變
物件賦值
物件的賦值是對乙個已經存在的物件賦值,因此必須先定義被賦值的物件,才能進行賦值
box box1;
box box2;
box2 = box1
物件複製
物件複製則是從無到有地建立乙個新物件,並使它與乙個已有的物件完全相同(包括物件的結構和成員的值)
box box1;
box box2 = box1;
函式過載:
必須在同乙個類中進行;
子類無法過載父類的函式,父類同名函式將被子類名稱覆蓋;
過載是在編譯期間根據引數型別和個數決定函式的呼叫(靜態聯編)。
函式重寫與重定義:
重寫:必須發生在基類和派生類之間,並且父類與子類的函式必須有完全相同的函式原型;
使用virtual關鍵字宣告之後能夠產生多型(如果不使用virtual,那叫重定義);
多型是在執行期間根據具體物件的型別決定函式呼叫(動態聯編)。
C 中一些易混淆概念總結(五)
這次主要分享的內容是關於繼承的知識。首先,我們先來看看繼承 既然有繼承,就要有父類和子類,來看下面的一段 複製 class person public void run class student person 複製 然後我在main 函式中例項化子類的物件,如下 static void main ...
c 容易混淆的概念
簡單地說,c 標準庫包含了三個部分 c 標準庫的 c 版本 c io 庫 c stl io 庫最常用的 header 是 標頭檔案 stl 包括了很多容器類 vector,list,deque,stack.還有 functinal,algorithm,iterator 等 c 標準庫的 c 版本 設...
c語言指標容易混淆的一些應用
陣列名稱等價於指標 int iarry int p p iarry 陣列名iarry等價於乙個指向該陣列的指標 方括號陣列下標運算符號 相當於取址 怎麼理解呢,iarry 1 等價於 iarry 1 或 p 1 陣列名iarry是指向該陣列第乙個元素的首位址 iarry指向的位址 iarry 0 但...