整理下sizeof注意事項

2021-10-06 16:15:41 字數 1035 閱讀 1377

"a"叫做字串常量

1.字串常量不能被賦值,同時字串常量不能對值修改

2.字串常量在記憶體中佔若干位元組(至少乙個字元結束標誌)佔位元組數等於字串中位元組數加一。在c語言中系統會在每個字串的最後自動加乙個』\0』(本身並不看作是字串的一部分)作為字串的結束標誌。如』'hello"在記憶體中佔六個位元組。

3.無字串變數,如果想將乙個字串存放在變數中以便儲存,必須使用字元陣列。用陣列中每乙個元素存放乙個字元。如char a=「hello」;

4.屬於靜態儲存類,在整個程式執行中只儲存乙份。

首先,strlen是函式,sizeof是運算操作符,二者得到的結果型別為size_t,即unsigned int型別。大部分編譯程式在編譯的時候就把sizeof計算過了,而strlen的結果要在執行的時候才能計算出來。

對於以下語句:

char *str1 = 「asdfgh」;

char str2 = 「asdfgh」;

char str3[8] = ;

char str4 = 「as\0df」;

執行結果是:

sizeof(str1) = 4; strlen(str1) = 6;

sizeof(str2) = 7; strlen(str2) = 6;

sizeof(str3) = 8; strlen(str3) = 3;

sizeof(str4) = 6; strlen(str4) = 2;

str1是字元指標變數,sizeof獲得的是該指標所佔的位址空間,32位作業系統對應4位元組,所以結果是4;strlen返回的是該字串的長度,遇到』\0』結束,』\0』本身不計算在內,故結果是6。

str2是字元陣列,大小由字串常量"asdfgh"確定,sizeof獲得該陣列所佔記憶體空間大小,包括字串結尾的』\0』,所以結果為7;strlen同理返回6。

str3也是字元陣列,但大小確定為8,故sizeof得到的結果是8;strlen統計』\0』之前所有字元的個數,即為3;

str4是常量字元陣列,sizeof得到字元總數即6;strlen計算至』\0』結束,因此返回2;

flashback注意事項整理

flashback drop 需要注意的地方 1 只能用於非系統表空間和本地管理的表空間 2 物件的參考約束不會被恢復,指向該物件的外來鍵約束需要重建。3 物件能否恢復成功,取決與物件空間是否被覆蓋重用。4 當刪除表時,信賴於該錶的物化檢視也會同時刪除,但是由於物化檢視並不會被放入recycle b...

OI 複賽注意事項整理

明天就csp了,寫點這麼多次模擬賽的經驗給自己複習一下 本文涉及演算法及思路僅供自己複習,您們tql直接akioi了不需要這些策略 1.首先預估一下難度,如果發現遠超正常t1難度先跳過,然後思考一下,若發現用到的演算法沒學過或沒寫過,先跳過。2.如果完全沒有方向 先寫暴力求穩,進一步打表找規律。3....

C語言程式設計注意事項 sizeof和inline

sizeof屬於運算子。如果程式中執行sizeof k 語句後,k值並不會加1 原因分析 可能是由於sizeof的計算是發生在編譯時刻吧。inline函式應該放在標頭檔案中定義 h檔案 關鍵字inline必須與函式定義體放在一起 慎用內聯,雖然它有諸多好處 內聯包含迴圈或switch語句的函式常常得...