C程式設計 指標和陣列

2021-07-04 15:07:17 字數 1715 閱讀 3658

1.a

nsi c 使用型別void* 代替char *作為通用指標型別,即乙個指向void型別的指標可以存放任何型別的指標,但它不能間接引用其自身;

2.指標和整數之間不能相互轉換,但0是唯一的例外:常量0可以賦值給指標,指標也可以與常量0比較。程式中常用常量null代替0,符號常量null定義在標準標頭檔案中;

3.strstr()函式

包含檔案:

string.h

函式名: strstr

函式原型:

1

externchar*strstr(char*str1,constchar*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

charstr="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 我覺得 指標 只要 掌握 兩方面資訊 就 沒什麼 可難的了.一是 指標變數 裡 存放的 位址 二是 指標變數 ...