char a[5] = ;可以得出因為strlen得出的是實際長度,所以m=3;int m = strlen(a) / sizeof(char);
int n = sizeof(a) / sizeof(char);
sizeof得出的是定義長度,所以n=5;
char a = "abcdef";a直接是指這串字元的首位址,所以m就是這串字元的長度,m=7;char *b = "abcdef";
int m=sizeof(a);
int n=sizeof(b);
而b是以指標的形式指向字串,根據規定,指標型別的長度為4,所以n=4;
char a = ;根據執行結果顯示然後再模擬char a可得;char *b = ;
char *c = ;
cout << *a << " " << *b << " " << *(c+1) << endl;
cout << **b << " " << **c << endl;
顯示:a a aorld
a d
b和c是指向陣列中第n項字串的指標,所以*b,*c顯示的就是每個陣列的第1個字串;
而*b也可看作*b,即為指向第n個字串的字串內部指標,所以**b顯示的是第乙個字串的第乙個字母。
此時用到指標型別長度為4的性質。
const char*a = ;所以得出這個指標字串陣列有4個字串。int m = sizeof(a) / sizeof(*a);
cout << m << " " << sizeof(a) << " " << sizeof(*a) << endl;
顯示:4 16 4
所以若遍歷這個指標字串陣列看下面**
const char*a = ;
int m = sizeof(a) / sizeof(*a);;
for (int i = 0; i < m; i++)
關於字串陣列,指標定義陣列
今天測了乙個程式,發現了一些不懂的問題,下面貼上 和自己的一些想法。1.用指標指向乙個字串,並嘗試修改字串。char p hello p 2 c printf the word is s n p 編譯沒有問題,但是執行沒有任何的輸出。我們都知道p指向 hello 的首字母 h 的位址,但printf...
C 字元 字串 字元陣列 字串指標 指標陣列
一 c 字元 字串 字元陣列 字串指標 指標陣列 前言 一 字元指標 字元陣列 二 字串指標 三 字串 指標陣列 四 常用方法 參考為了深入理解c 並時常回顧學過的知識點,對c 知識點進行記錄總結。參考1字元指標的儲存方式 字元指標變數本身是乙個變數,用於存放字元 字串的首位址。字串本身是存放在以該...
字串,字串陣列,字串指標!!
字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...