C/C++關鍵字及運算子的簡單用法4

2020-08-12 13:56:45

1.sizeof關鍵字
1.1簡單用法
sizeof 爲C語言的一個主要關鍵字,而並非是一個函數,雖然其後經常會跟着一對括號,這就導致許多人認爲這是一個函數,進而產生誤解。用途:求某一特定的變數、指針、結構體、列舉、聯合體等所佔記憶體空間的大小。

1.2範例:

#include<iostream>
using namespace std;

int main()
{
    char str1[]={'h','e','l','l','o'};
    cout<<"str1="<<str1<<endl;
 
    char str2[100]={'h','e','l','l','o'};
    cout<<"str2="<<str2<<endl;
 
    char str3[]="hello";
    cout<<"str3="<<str3<<endl;
 
    cout<<"size of str1="<<sizeof(str1)<<endl;
    cout<<"size of str2="<<sizeof(str2)<<endl;
    cout<<"size of str3="<<sizeof(str3)<<endl;
    return 0;
}

這些基本數類sizeof所求的記憶體空間大小受到不同系統的約束。例如:在64位元系統下,其大小分別爲:
輸出如下:環境爲win10+Dev c++
在这里插入图片描述基本知識:
用{}列舉如str1用sizeof爲真實長度並沒有在末尾新增‘\0’.
但直接寫字串會在末尾新增\n.sizeof的結果會大一個字元。

1.3strlen函數與sizeof的區別
strlen 是一個函數,它用來計算指定字串 str 的長度,但不包括結束字元(即 null 字元)。
看如下程式碼:

#include<iostream>
#include<string.h>
using namespace std;

int main()
{
    char str1[]={'h','e','l','l','o'};
    cout<<"str1="<<str1<<endl;
 
    char str2[]="hello";
    cout<<"str2="<<str2<<endl;
     
    char str3[100]={'h','e','l','l','o'};
    cout<<"str3="<<str3<<endl;
    
    cout<<"sizeof str1="<<sizeof(str1)<<endl;
    cout<<"sizeof str2="<<sizeof(str2)<<endl;
    cout<<"strlen str2="<<strlen(str2)<<endl;
    cout<<"strlen str3="<<strlen(str3)<<endl;
    cout<<"sizeof str3="<<sizeof(str3)<<endl;
    return 0;
}

在这里插入图片描述由此可以看出:
strlen()得到的是字串的真實長度,而sizeof是得到字串在定義時在記憶體裡開闢的大小。