終于開始c++基礎的整理了
1. 輸出
// C使用printf向終端輸出信息
// C++提供了 標準輸出流
#include <iostream>
using namespace std;
// 1. c++輸出
int time = 8;
cout << "dds:" << time << "點," << "hello world" << endl;
2. 函數(shù)符號兼容
C的大部分代碼可以在C++中直接使用,但是仍然有需要注意的地方。
//如果需要在C++中調(diào)用C實現(xiàn)的庫中的方法
extern "C" //指示編譯器這部分代碼使用C的方式進行編譯而不是C++
void func(int x, int y);
對于 func
函數(shù) 被C的編譯器編譯后在函數(shù)庫中的名字可能為func
(無參數(shù)符號),而C++編譯器則會產(chǎn)生類似funcii
之類的名字。
因此,對于C庫可以
#ifdef __cplusplus
extern "C"{
#endif
void func(int x,int y);
#ifdef __cplusplus
}
#endif
//__cplusplus 是由c++編譯器定義的宏,用于表示當前處于c++環(huán)境
3. 引用
引用是C++定義的一種新類型,引用和指針是兩個東西,這里需要分清楚
//聲明形參為引用
void change(int& i) {
i = 10;
}
int i = 1;
change(i);
printf("%d\n",i); //i == 10
4. 字符串
字符串實際上是使用 NULL字符 '\0'
終止的一維字符數(shù)組。
//字符數(shù)組 = 字符串
char str1[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
//自動加入\0
char str2[] = "Hello";
字符串操作
函數(shù) | 描述 |
---|---|
strcpy(s1, s2); | 復制字符串 s2 到字符串 s1。 |
strcat(s1, s2); | 連接字符串 s2 到字符串 s1 的末尾。 |
strlen(s1); | 返回字符串 s1 的長度。 |
strcmp(s1, s2); | 如果 s1 和 s2 相同,則返回 0;如果 s1 < s2 則返回小于0;如果 s1>s2 則返回大于0 |
strchr(s1, ch); | 返回指向字符串 s1 中字符 ch 的第一次出現(xiàn)的位置的指針。 |
strstr(s1, s2); | 返回指向字符串 s1 中字符串 s2 的第一次出現(xiàn)的位置的指針。 |
C++ string類
C++ 標準庫提供了 string 類類型,支持上述所有的操作,另外還增加了其他更多的功能。
#include <string>
//string 定義在 std命令空間中
usning namespace std;
string str1 = "Hello";
string str2 = "World";
str1.append(str2);
//獲得c 風格字符串
const char *s1 = str1.c_str();
//字符串長度
str1.size();
//長度是否為0
str1.empty();
......
5. 命名空間
namespace 命名空間 相當于package
namespace A{
void a(){}
}
錯誤 : a();
// :: 域操作符
正確: A::a();
//當然也能夠嵌套
namespace A {
namespace B{
void a() {};
}
}
A::B::a();
//還能夠使用using 關鍵字
using namespace A;
using namespace A::B;