... 这里省略若干c++历史介绍的内容
二、 第一个c++ 程序
1. 编译方式
gcc xx.cpp -lstdc++
g++ xx.cpp
2. 文件扩展名
1) .cpp // 最常用
2) .cc
3) .c
4) .cxx
3. 头文件
#include <iostream>
4. 输入和输出
用 cin 表示标准输入, 用 cout 表示标准输出
// printf("hello world!");
cout << "hello world!" << endl;
"<<": 出入运算符
int a = 10;
double d = 3.14;
char* str = "abcdef";
// printf("%d, %lf, %s\n", a, d, str);
cout << a << ',' << d << ',' << str << endl;
">>": 提取运算符
int number;
int number2;
// scanf("%d%d", &numbr, &number2);
cin >> number >> number
5. "std:: " 标准名字空间
三、名字空间
1. 名字空间作用
1) 避免名字冲突
2) 划分逻辑作用域
2. 定义
namespace 名字空间名{
int x;
void foo(void){}
struct Student{};
namspace ns2{}
}
eg:
namespace ns1{
char name[20] = "limu";
namespace ns2{
char name[20] = "limu";
namespace ns3{
char name[20] = "limu";
}
}
}
ns1::name;
ns1::ns2::name;
ns1::ns2::ns3::name;
3. 名字空间的使用
1) 通过作用域限定符"::"
名字空间名::要访问的成员
2) 名字空间指令
using namespace 名字空间名;
在该条指令以后的代码中,指定名字空间中的成员都可以见,访问其中的成员可以省略作用域的限定.
eg:
namespace ns1{
char name[20] = "limu";
}
int main(void){
strcpy(name, "limu"); // error
using namespace ns1;
strcpy(name, "lilin"); // ok
}
3) 名字空间声明
using 名字空间名::名字空间成员;
将名字空间特定的成员引入当前作用域,在该作用域中访问这个成员如同访问自己的成员一样,可以省略作用域限定.
eg:
namespace ns1{
int x;
void foo(void){}
}
int main(void){
using ns1::x;
x = 10; // ok
foo(); // error
}
4. 无名名字空间
不属于任何名字空间的标识符,将会被编译器自动放入无名的名字空间中。
使用无名无名空间的成员"::标识符"
四、 c++ 的结构体、联合体和枚举
1. c++ 结构体
1) 定义结构体时, 可以省略 struct 关键字
eg:
struct Student{
char name[20];
int age;
}
int main(void){
// struct Student s = {"limu", 18}; // c风格的写法
Student s = {"limu", 18}; // c++ 风格的写法
}
2) c++结构体里面可以直接定义函数,称为成员函数,在成员函数中可以直接访问成员变量;
struct Student{// 声明 Student 结构体类型
char name[20]; // 成员变量
int age; // 成员变量
void who(void){// 成员函数
cout << name << ',' << age << endl;
}
};
int main(){
Student s={"limu", 18}; // c++ 风格写法
s.age++;
s.who();
}
2. c++ 联合体(了解)
1) 定义联合体变量可以省略 union 关键字
2) 支持匿名联合
3. c++ 枚举
1) enum 关键字可以省略
2) c++ 枚举是一种独立的数据类型,而 c 中的枚举本质是整形数。
enum COLOR{RED, GREEN, BLUE};
COLOR C; // RED, GREEN, BLUE
c = RED; // C: OK C++:OK
c = 0; // c: ok c++: error
五、 c++ 字符串
1. c 中表示字符串
1) 双引号: "hello world";
2) 字符指针: char* p = 字符串;
3) 字符数组: char arr[] = "hello world";
char* p = "hello world";
strcpy(p, "abcdef"); // error
p = "abcdef"; // ok
cout << *(p++) << endl; // B
2. c++ 兼容c 字符串的同时,增加了 string 类型,专门表示字符串;
eg:
string s = "hello";
s = "world"; // 拷贝
cout << s << endl; // world
s += "!"; // 字符串连接
cout << s << endl; // world!
if(s >= "hello"){}
六、 c++ 布尔类型
1. bool 类型是 c++ 中的基本类型, 表示逻辑值: true/false
2. bool 内存占1个字节: 1表示 true, 0 表示false
3. bool 类型变量可以接收任意类型变量或表达式,其中非 0 为 true, 0 为 false
七、 c++ 字符串形式的运算符(了解)
&&
||
^ --xor
{ --<%
} --%>
! not
!= -- not_eq
...
练习: string 字符串的使用