**sizeof與strlen的區別: **
下面以代碼的形式來解釋
#include <iostream>
using namespace std;
int main()
{
cout << sizeof(int) <<"\t"<<sizeof(double)<< endl;
int x = 3;
cout << sizeof(x) << endl;
//cout << strlen(4) << endl; //error: strlen只能以\0結尾的參數作爲參數
cout << strlen("abc123d") << endl; // 系統會自動加個'\0'作爲結束符
int arr[] = { 1,2,3 };
cout << sizeof(arr) << endl; // 數組作爲sizeof參數時,不退化
//cout << strlen(arr) << endl; // error:數組作爲strlen的參數時,退化爲指針,指針是一種普通的變量,從訪問上不異與其他變量。
//它保存的數值是整型類型,和整型數據不同的是,它指向的是一段內存地址。所以不是以‘\0’結束的字符串,所以報錯
/*
兩者區別:
sizeof是一個操作數,而strlen是庫函數
sizeof的參數可以是數據的類型也可以是變量,而strlen的參數只能是以'\0'爲結尾的字符串
編譯器在編譯時期就計算出了sizeof的結果,而strlen函數必須在運行時才能計算出來
sizeof計算的是類型所佔內存的大小,而strlen計算的是字符串實際的長度
數組作sizeof的參數不退化,而傳遞給strlen作參數就退化爲指針了
*/
return 0;
}