c 字串陣列長度排序 C指標和字串陣列

2021-10-17 08:03:35 字數 1834 閱讀 3507

下面這段**輸出什麼?

#include#includeint main()

; char **pa = a;

pa++;

printf("%sn", *pa);

system("pause");

return 0;

}

a是乙個陣列,這個陣列存的型別是 char * 型別,所以是這個樣子的。

pa 是乙個二級指標變數,這個指標變數的初始化位址的 a 的首元素的位址,所以pa的值和 &a[0]是一樣的。

pa 是乙個指標變數,pa 初始化的是 &a[0] ,也就是這個陣列的首位址。

感覺有人還不是很理解這個東西,pa 存在的是 a[0] 的位址,所以通過 * 這個鑰匙就可以拿到 pa裡面的東西,a[0] 裡面的東西是什麼型別的?看 a的定義我們可以知道,裡面存的是 char * 字串。

print("%sn",*pa);
應該輸出的是 「work」字串。

但是呢,題目裡面對 pa進行了自加運算,那 pa 存的位址就不是這個了。

這個 pa++ 我們應該如何去理解,或者它本來就應該進行什麼運算呢?

pa 是什麼?

pa 是乙個指標變數。

pa 的型別是什麼?

pa 的型別是 char ** 型別,就是二級指標變數,也就是他存的是指標變數的位址。

所以正常是這樣使用

* a是乙個別名,這個別名代表乙個位址,這個位址裡面存的是乙個字元 『p』

* p因為它的前面有乙個 * 所以 p是乙個指標變數,它存的是東西是位址,它存的這個位址裡面存的是乙個 char 。

* p1 因為它前面有乙個 * 所以 p1 是乙個指標變數,它存的是東西是位址,它存的這個位址裡面存的是乙個char *

* p2 因為它前面有乙個 * 所以 p2 是乙個指標變數,它存的是東西是位址,它存的這個位址裡面存的是乙個char * *

* p3 因為它前面有乙個 * 所以 p3 是乙個指標變數,它存的是東西是位址,它存的這個位址裡面存的是乙個char * * *

* p4 因為它前面有乙個 * 所以 p4 是乙個指標變數,它存的是東西是位址,它存的這個位址裡面存的是乙個char * * * *

* p5 因為它前面有乙個 * 所以 p5 是乙個指標變數,它存的是東西是位址,它存的這個位址裡面存的是乙個char * * * * *

我們分析下 char * * * * * 這個是什麼?

這個是乙個型別,也可以是說明屬性,在漢語裡面,可以理解為形容詞,形容詞後面如果沒有名詞,是沒有意義的。

就比如說 「我非常」,主謂賓,沒有後面的乙個詞來輔助,它沒有意義。

char * * * * * 也是一樣,它後面需要加乙個東西,應該是後面需要加乙個位址,指明這個位址是幹什麼的。

比如 char * * * * * pt

c 獲得字元陣列長度及字串長度

1.字串輸入總結 遇到空格結束 2 cin.get 用法1 cin.get 字元變數名 可以用來接收字元 include using namespace std main 請輸入第1個字串 kskr1 請輸入第2個字串 kskr2 請輸入第3個字串 kskr3 輸出m 0 的值 kskr1 輸出m ...

獲取C C 字串 字元陣列長度

在c c 中常用的獲取字串長度或者字串陣列長度的函式有 sizeof length strlen size 其中strlen str 和str.length 和str.size 都可以用來求字串的長度 str.length 和str.size 是用於求string類物件的成員函式 strlen st...

c 陣列求長度 字串長度

c 求長度的方法很侷限吧,我目前只知道 int a 10 int length sizeof a sizeof a 0 cout length 坑呀坑!寫二分查詢的時候,發現這樣乙個問題,把乙個陣列的位址傳入內部,然後求它的長度和外部的不一樣。直到我寫出下面的程式後就恍然大悟 include usi...