今天看到了sizeof的問題,發現基礎有些都記不牢了,現在把它們都記下;
一、函式說明
sizeof是運算子,strlen是函式
1.sizeof
標頭檔案:stddef.h格式:
1) sizeof( object ); // sizeof( 物件 );
2) sizeof( type_name ); // sizeof( 型別 );
3) sizeof object; // sizeof 物件
功能:乙個物件或者型別所佔的記憶體位元組數;
說明:sizeof操作符的結果型別是size_t,typedef unsigned int size_t;
原型:extern unsigned int strlen(char *s);標頭檔案:string.h
2.格式:strlen (字元陣列名)
功能:計算字串s的(unsigned int型)長度,不包括'\0'在內
說明:返回s的長度,不包括結束符null。
二、例子說明
我們經常使用 sizeof 和 strlen 的場合,通常是計算字串陣列
的長度看了上面的詳細解釋,發現兩者的使用還是有區別的,從這個例子可以看得很清楚:
1
char str[20]=
"0123456789"
;
int a=strlen(str); //a=10; >>>> strlen 計算字串的長度,以結束符 0x00 為字串結束。
int b=sizeof(str); //而b=20; >>>> sizeof 計算的則是分配的陣列
str[20] 所佔的記憶體空間的大小,不受裡面儲存的內容改變。
上面是對靜態陣列
處理的結果,如果是對指標
,結果就不一樣了
char* ss = "0123456789";
sizeof(ss) 結果 4 ===》ss是指向
字串常量
的字元指標
,sizeof 獲得的是乙個
指標的之所佔的空間,應該是
長整型的,所以是4
sizeof(*ss) 結果 1 ===》*ss是第乙個字元
其實就是獲得了字串的第一位'0' 所佔的記憶體空間,是char類
型的,佔了 1 個位元組
strlen(ss)= 10 >>>> 如果要獲得這個字串的長度,則一定要使用 strlen
sizeof返回物件所占用的位元組大小. //正確
strlen返回字元
個數. //正確
三、其它說明
定義如下
1.unsigned char a="01234";
2.unsigned char a=
3.unsigned char a=;
4.unsigned char a=;
1和2等價;
3和4等價;
1!=3
Excel輸入十六進製制數,以及十六進製制運算
網上覆制來複製去的連個靠譜答案都沒有.f k 所以無奈自己探索出來了 單元格 a1文字值 a2進製值 輸入內容 fefe oct2hex hex2oct a29 由於單元格沒有提供進製格式,所以填入的值實際上是文字值,但是轉換函式卻可以把文字值視為進製值拿去轉換 所以我們兩次轉換就能得到真正的進製數...
進製轉換 十六進製制轉八進位制 十六進製制轉十進位制
在十六進製制轉為八進位制的過程中包含了將十六進製制轉化為二進位制以及將二進位制轉化為八進位制!我自己測試是沒什麼問題,但是在藍橋杯官網的測試系統就顯示執行錯誤qwq 不知道為什麼 附 include includeusing namespace std int main if len2 i 3 2 ...
十六進製制位元組 十六進製制轉二進位制
做專案也將近一年的時間了。從一開始就經常提到 乙個十六進製制位元組 然而一開始就是迷惑的,直到現在。乙個十六進製制位元組,比如 ff。周圍的人經常說這是乙個十六進製制位元組。然後我就想,這不是兩個字元嗎,分別是f 和f,乙個字元是乙個位元組,兩個字元是兩個位元組,怎麼就成乙個十六進製制位元組,就成乙...