獲取char指標內容的長度

2021-06-19 11:21:38 字數 682 閱讀 6884

如果能確定所指變數為字串位址,可以用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中取...