字元指標陣列

2021-10-11 01:47:43 字數 2391 閱讀 3942

#include int main(void)

;//*單獨拿出來,指的是陣列裡的內容是*型的,str的型別是char *型

printf("%c\n",*(*(str+1)+1)); //d

printf("%c\n",**str); //a

printf("%s\n",*str+1); //bg

printf("%s\n",*(str+1)); //cd

printf("%s\n",str[0]); //abg

printf("%p\n",&str); //陣列整體的收位址,大小同下行**的值

printf("%p\n",str); //陣列的首位址,即存放內容——字串"abg"的位址,並非'a'的位址

system("pause");

return 0;}/*

指標陣列相當於二位陣列

str-->"abg"的位址,str+1 --->"cd"的位址

*str-->"abg"的首位址,即'a'的位址,*(str+1)--->"cd"的首位址,即'c'的位址

*(str+1)+1--->"cd"的首位址+1,即'd'的位址

*(*(str+1)+1)--->對'd'的位址取值,即為'd'

**str-->'a'

*/

#include char **string(char *str)

//返回*str時,因為是下標運算符號,可以當作*,所以返回值類新為char **

int main(void)

在c語言中,指向指標的指標一般定義為:

型別名**變數名;

也稱為二級指標。與一級指標相比,二級指標的概念較難理解,運算也更為複雜。

例如:

int a=10;

int *p=&a;

int **pp=&p;

定義了三個變數a,p,pp並初始化。一級指標p指向整型變數a,二級指標pp指向一級指標p。由於p指向a,所以p和&a的值一樣,a和*p代表同乙個單元;由於pp指向p,所以pp和&p的值一樣,p和**p代表同乙個單元。由此可知&&a,&p和pp等價,&a,p和*pp等價,a,*p,和**p代表同乙個單元,它們的值相同。

1.指標陣列與二維陣列

如果要處理多個字串,通常使用二維字元陣列或者指標陣列。例如:

char ccolor[7]=;

char *pcolor=;

定義了兩個陣列。ccolor是二維字元陣列,3行7列共21個元素,每一行存放乙個字串,每個元素的型別都是字元型。pcolor是指標陣列,有3個元素,占用3個儲存單元,每個元素的型別都是字元指標,分別指向乙個字串。

定義二維字元陣列的時候必須指定列長度,該長度要大於最大的字串的有效長度,由於每個字串的長度一般並不相同,會造成記憶體單元的浪費。而指標陣列並不存放字串,僅僅用陣列元素指向各個字串,就沒有類似的問題。

2.用指標陣列操作多個字串

例:將5個字串從小到大排序後輸出

#include#includevoid fsort(char*color, int n);

int main()

; fsort(pcolor, 5);

for (i = 0; i < 5; i++)

system("pause");

return 0;

}void fsort(char*color, int n) //乙個字串冒泡

} }}

在程式的排序函式中,比較指標陣列的元素所指向字串的大小,需要交換時,直接交換陣列元素的值,即改變它們的指向。

通過指標陣列不僅可以對多個字串整體操作,還可以對字串中的字元進行操作。

例:解密藏頭詩

//解密藏頭詩

#includechar*change(char s[20]);

int main()

; char mean[10];

for (i = 0; i < 4; i++)

mean[2 * i] = '\0';

printf("%s\n", mean);

system("pause");

return 0;

}

在此例中,分別從指標陣列poem指向的四句詩中取出第乙個漢字,然後按順序存入字元陣列mean中,尾部新增字元'\0'生成乙個字串,此字串即為解密內容。由於乙個漢字由兩個字元組成,所以在實際操作時是取出每個字串的前兩個字元,程式中 *(poem[i]) 對應的第i個字串中的第1個字元,*(poem[i] +1) 對應第i個字串中的第2個字元。

字元指標陣列

char a hello world a的資料型別為char 其指向的資料型別為char,指向該字串的首元素h的位址 在對字元指標初始化賦值時可以將乙個字串賦值給它,但指標變數只是向該字串的首元素的位址,如果要訪問該字串其它的字元,需要通過指標偏移來實現.若要列印整個字串,printf s n a ...

字元,字元陣列,字元指標

一 字串變數與常量 例 char a abcdefg 這一段語句中,既有字串變數,也有字串常量。變數是陣列a,常量是 中的字面量字串 abcdefg 此時,可以訪問或修改a中任意乙個元素 但是,常量字串只能訪問,不能修改。這句留著下面有用 二 字元指標與字串常量 例 char p abcdefg 這...

函式指標 函式指標陣列 字元指標陣列

資料型別 指標名字 引數列表 int function int int include include intadd int a,int b int sub int a,int b int mul int a,int b int div int a,int b int main int argc,c...