如果能確定所指變數為字串位址,可以用strlen(p)取得字串長度。
strlen能返回字串的長度是因為它認為到'\0'就是結束的地方
sizeof和記憶體無關,只根據資料型別來判斷,而資料型別的長度和作業系統有關1:
char*
a = "c:
\\temp\\a.txt\n";
intb = strlen(a);
2:char
a = "hello world";
char
*p = a;
cout<<
sizeof(a) << endl; // 12位元組
cout<<
sizeof(p) << endl; // 4位元組
計算陣列和指標的記憶體容量
void
func(char a[100]) 這裡
陣列退化為指標 3
: char
buffer[100];
char*
p = buffer ;
intbufsize = sizeof( buffer ) / sizeof( *p ) ;
可以看到,bufsize是100,得到了那個陣列的大小。或者這些寫更直觀:
intbufsize = sizeof( buffer ) / sizeof( buffer[0] ) ;
char陣列和char指標應該注意的
陣列要麼在靜態區被建立 如全域性陣列 要麼在棧上被建立。陣列名對應著 而不是指向 一塊記憶體,其位址與容量在生命週期內保持不變,只有陣列的內容可以改變。指標可以隨時指向其他型別的記憶體塊,它的特徵是 可變 所以常用指標來操縱動態記憶體。指標遠比陣列靈活,但也更危險。1.返回指向棧上的記憶體的指標 c...
char的問題,輸出固定長度
在匯出自定義檔案時,我要輸出一段固定長度 比如80位元組 的乙個字串,define file head 80 char stroutput file head version 1.0 of file ar.write stroutput,file head 其實定義乙個5個位元組的char陣列時,能...
char指標與char陣列的區別(非常詳細!)
首先看指標 char p helloworld 在這裡p是乙個變數,其型別為指標型別,並且指向乙個字串,字串內容為 helloworld 如果要訪問p 2 的話,就需要先從p中取出位址,該位址為 helloworld 的首位址,然後再加上偏移量2,就得到了 l 這個字元,所以其訪問的方式為先從p中取...