输入输出
输入输出流是指由若干字节组成的字节序列,这些字节中的数据按照顺序从一个对象传送到另一个对象。流表示了信息从源到目的端的流动。例如在输出时字节从内存流向输出设备,输入时字节从输入设备流向内存。
- 输入输出头文件:#include
- c语言头文件名字风格是 <XXX.h>,c++中头文件风格是不带最后的.h
- cin 从控制台读入内容到变量。
- cout 从变量输出内容到控制台。
- std标准命名空间:C++标准库中的函数或者对象都是在命名空间std中定义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include<iostream> using namespace std;
int main() { int a = 1; cin >> a; cout << a;
cout << a << endl;
cout << "指针2010" <<" "<<"指针2010"<< endl; return 0; }
|
bool
bool类型是c++中的基本数据类型,一种整型类型。
- 单独占一个字节,取值false(0)或true(1)。
- 任何非0值转换为true,0转换为false。
- c语言中没有bool类型。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include<iostream> using namespace std; int main() { bool a1 = -1 ; bool a2 = 0; int b1 = true; int b2 = false; cout << a1 << endl; cout << a2 << endl; cout << b1 << endl; cout << b2 << endl; return 0; }
|
命名空间(namespace)
::限制符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| #include<iostream>
using namespace std;
namespace name1 { int a; void print(){} }
namespace name2 { int a; }
namespace name3 { int n3; namespace name4 { int n4; } }
int main() { name1::a = 100; name1::print(); using namespace name1; a = 10; using namespace name2; name3::n3 = 100; name3::name4::n4 = 200; using namespace name3; n3 = 300; using namespace name3::name4; n4 = 400; return 0; }
|
new操作符
C++中利用new操作符在堆区开辟数据
堆区开辟的数据,由程序员手动开辟,手动释放,释放利用操作符 delete
函数使用的是栈区,函数结束后自动释放
语法:new 数据类型
利用new创建的数据,会返回该数据对应的类型的指针
malloc 返回值为void
示例1: 基本语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| int* func() { int* a = new int(10); return a; }
int main() { int *p = func(); cout << *p << endl; cout << *p << endl; delete p; return 0; }
|
示例2:开辟数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| int main() {
int* arr = new int[10];
for (int i = 0; i < 10; i++) { arr[i] = i + 100; }
for (int i = 0; i < 10; i++) { cout << arr[i] << endl; } delete[] arr;
system("pause");
return 0; }
|
new和malloc:C++动态分配(new和malloc的用法及区别)_动态开辟对象指针数组为什么不能用malloc-CSDN博客
指针
定义易混淆:
1 2 3
| int* pa; // int类型指针变量pa int *pa; // int类型指针变量pa int a, b, * pa; // int类型变量a、int类型变量b、int类型指针变量pa
|
一句话学懂指针变量
指针变量中放的是谁的地址,*指针变量就是谁
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include<stdio.h> int main() { int a = 10; int b = 20; int* pa = &a; int* pb = pa; *pb = b; b = 6; printf("%d ", a); printf("%d ", b); printf("%d ", *pa); printf("%d ", *pb); pb = &b; a = 8; printf("%d ", a); printf("%d ", b); printf("%d ", *pa); printf("%d ", *pb); *pb = a; *pa = *pb; pa = pb; printf("%d ", a); printf("%d ", b); printf("%d ", *pa); printf("%d ", *pb); return 0; }
|
课后习题1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include<stdio.h> int main() { int a = 10; int b = 20; int* pa = &a; int* pb = &b; *pb = a; a = 2; printf("%d ", a); printf("%d ", b); printf("%d ", *pa); printf("%d ", *pb); *pb = *pa; pb = pa; a = 8; printf("%d ", a); printf("%d ", b); printf("%d ", *pa); printf("%d ", *pb); pb = &a; *pa = a; pa = &b; *pb = b; printf("%d ", a); printf("%d ", b); printf("%d ", *pa); printf("%d ", *pb); return 0; }
|
课后习题2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include<stdio.h> int main() { int a = 10; int b = 20; int* pa = &a; int* pb = &b; *pb = a; *pa = b; printf("%d ", a); printf("%d ", b); printf("%d ", *pa); printf("%d ", *pb); *pb = *pa; a = 8; pb = pa; printf("%d ", a); printf("%d ", b); printf("%d ", *pa); printf("%d ", *pb); pb = &a; pa = &b; a = 5; *pb = a; printf("%d ", a); printf("%d ", b); printf("%d ", *pa); printf("%d ", *pb); return 0; }
|
二级指针
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include<stdio.h> int main() { int a = 10; int b = 20; int *pa = &a; int *pb = &b; int** ppa = &pa; ppa = &pb; pb = pa; *ppa = pb; **ppa = 30; a = 50; b = 60; printf("%d ", a); printf("%d ", b); printf("%d ", *pa); printf("%d ", *pb); printf("%d ", **ppa); return 0; }
|