char *str = new char[100];
strcpy(str, "hello imooc");
cout << "*str"; // 輸出單個字符 'h'
cout << "*str" 中的 *str 是解引用操作,取得的是 str[0] 即首字符 'h',而非整個字符串。
cout << str; // 輸出 "hello imooc"
operator<<(ostream&, const char*) 重載會從指針地址開始讀取直至遇到 \0。
cout << strlen(str); // 輸出 11
char arr[100];
strcpy(arr, "hello imooc");
cout << sizeof(arr); // 輸出 100(字節數)
// 注意:對指針 sizeof(str) 僅得指針大小(4/8 字節)
#include
#include
using namespace std;
int main() {
// 動態分配
char *str = new char[100];
strcpy(str, "hello imooc");
cout << "字符串內容: " << str << endl;
cout << "字符串長度: " << strlen(str) << endl;
cout << "首字符: " << *str << endl;
delete[] str;
// 棧上數組(可用 sizeof)
char arr[100] = "hello imooc";
cout << "\n數組大小: " << sizeof(arr) << " 字節" << endl;
cout << "有效長度: " << strlen(arr) << endl;
return 0;
}
| 表達式 | 類型 | 含義 | 示例輸出 |
|---|---|---|---|
str | char* | 字符串首地址 | 0x7ffe... |
*str | char | 首字符 str[0] | 'h' |
str[i] | char | 第 i+1 個字符 | 'e' |
strlen(str) | size_t | 字符串有效長度(不含 \0) | 11 |
sizeof(str) | size_t | 指針變量自身大小 | 8 (64位) |
sizeof(arr) | size_t | 數組總字節數 | 100 |
std::string 替代裸指針操作delete[],避免內存洩漏cout << "str=" << str 而非 *strchar* 是地址,char[100] 是內存塊