指針變量的定義:類型名?* 指針變量名
指針變量名是p乒省,不是*p , *是指針聲明符
定義指針時畦木,先將它的初值置為空
char *s = NULL
直接訪問:通過變量名訪問
*?? 間接訪問運(yùn)算符袖扛,訪問指針?biāo)赶虻淖兞?/p>
*p:指針變量 p所指向的變量
字符數(shù)組和字符指針的重要區(qū)別:
char sa[] = "This is a string";
char *sp= "This is a string";
如果要改變數(shù)組sa所代表的字符串,只能改變數(shù)組元素的內(nèi)容
如果要改變指針sp所代表的字符串十籍,通常直接改變指針的值蛆封,讓它指向新的字符串
scanf("%s",str);
輸入?yún)?shù):字符數(shù)組名,不加地址符
遇回車或空格輸入結(jié)束勾栗,并自動將輸入的一串字符和 ‘\0’送入數(shù)組中
gets(str)
遇回車輸入結(jié)束惨篱,自動將輸入的一串字符和 ‘\0’送入數(shù)組中
puts(str)輸出字符串之后,會自動換行
函數(shù)指針:每個函數(shù)都占用一段內(nèi)存單元围俘,它們有一個入口地址(起始地址)
在C語言中砸讳,函數(shù)名代表函數(shù)的入口地址琢融。
我們可以定義一個指針變量,接收函數(shù)的入口地址簿寂,讓它指向函數(shù)漾抬,這就是指向函數(shù)的指針,也稱為函數(shù)指針
函數(shù)指針定義的一般格式為:
???類型名? (*變量名)( 參數(shù)類型表);
?? 類型名指定函數(shù)返回值的類型常遂,變量名是指向函數(shù)的指針變量的名稱纳令。
例如:
int (* funptr)( int, int);
定義一個函數(shù)指針funptr,它可以指向有兩個整型參數(shù)且返回值類型為int的函數(shù)
通過函數(shù)指針調(diào)用函數(shù)的一般格式為:
??(*函數(shù)指針名)(參數(shù)表)
例如:
int fun(int x, int y);
int (*funptr)(int, int);
funptr= fun;
(*funptr)(3, 5);