1.a
nsi c 使用型別void* 代替char *作為通用指標型別,即乙個指向void型別的指標可以存放任何型別的指標,但它不能間接引用其自身;
2.指標和整數之間不能相互轉換,但0是唯一的例外:常量0可以賦值給指標,指標也可以與常量0比較。程式中常用常量null代替0,符號常量null定義在標準標頭檔案中;
3.strstr()函式
包含檔案:
string.h
函式名: strstr
函式原型:
1
extern
char
*
strstr
(
char
*str1,
const
char
*str2);
語法:1
*
strstr
(str1,str2)
str1: 被查詢目標 string expression to search.
str2: 要查詢物件 the string expression to find.
返回值:若str2是str1的子串,則先確定str2在str1的第一次出現的位置,並返回此str1在str2首位置的位址。;如果str2不是str1的子串,則返回null。
例子:1
2
3
char
str=
"1234xyz"
;
char
*str1=
strstr
(str,
"34"
);
cout << str1 << endl;
顯示的是: 34xyz
4.argv相關容易混淆問題
main(int argc, char *argv)
(*++argv)[0]和*++argv[0]的不同:
前者等價於argv[1][0],也就是第二個引數的第乙個元素的值;
後者等價於argv[0][1],也可寫為*(++argv[0]),也就是第乙個引數的第二個元素的值。
5.任何型別的指標都可以轉換成void * 型別,並且在將它轉換回原來的型別時不會丟失資訊。
6.複雜宣告
int *f(); /* f:是乙個函式,它返回乙個指向int型別的指標 */
int (*pf)(); /* pf:是乙個指向函式的指標,該函式返回乙個int型別的物件 */
稍微複雜一點的:
char (*(*x()))() /* x是乙個函式,它返回乙個指標,該指標指向乙個一維陣列,該一維陣列的元素是指標,
這些指標分別指向多個函式,這些函式的返回值是char型別 */
C指標陣列和陣列指標
測試 int main 定義二維陣列m並初始化 int p 4 陣列指標 p是指標,指向一維陣列,每個一維陣列有4個int元素 int i,j int q 3 指標陣列 q是陣列,陣列元素是指標,3個int指標 p m p是指標,可以直接指向二維陣列 printf 陣列指標輸出元素 n for i ...
指標和陣列 C專家程式設計筆記
對於編譯器而言,乙個陣列就是乙個位址,乙個指標就是乙個位址的位址。什麼時候陣列和指標是相同的 1 表示式中的陣列名 與宣告不同 被編譯器當作乙個指向該陣列第乙個元素的指標 在表示式中,指標和陣列是可以互換的,因為它們在編譯器裡的最終形式都是指標,並且都可以去下標操作.例對陣列的引用如a i 在編譯時...
c 陣列 和 陣列指標
今天 乙個朋友 面試,面試題如下 int tmain int argc,tchar argv int ptr int a 1 printf d t d a 1 ptr 1 return 0 我覺得 指標 只要 掌握 兩方面資訊 就 沒什麼 可難的了.一是 指標變數 裡 存放的 位址 二是 指標變數 ...