#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...