一.内存
1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap):动态内存分配例如malloc,一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区,static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字常量区:常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区:存放函数体的二进制代码。
二.命名空间
防止命名冲突
1 #include<iostream> 2 using namespace std; 3 4 namespace mfc 5 { 6 int inflag; 7 void g(int a){cout << a << endl;} 8 } 9 10 namespace owl 11 { 12 int inflag; 13 void g(int b){cout << b << endl;} 14 } 15 16 int main() 17 { 18 mfc::inflag = 1; 19 owl::inflag = 2; 20 cout << mfc::inflag << endl;//1 21 cout << owl::inflag << endl;//2 22 23 mfc::g(1);//1 24 owl::g(2);//2 25 26 return 0; 27 }
1 #include<iostream> 2 using namespace std; 3 4 namespace mfc 5 { 6 int inflag; 7 void g(int a){cout << a << endl;} 8 } 9 10 namespace owl 11 { 12 int inflag; 13 void g(int b){cout << b << endl;} 14 } 15 using mfc::inflag; 16 int main() 17 { 18 inflag = 1; 19 owl::inflag = 2; 20 cout << inflag << endl;//1 21 cout << owl::inflag << endl;//2 22 return 0; 23 }
1 #include<iostream> 2 using namespace std; 3 4 namespace mfc 5 { 6 int inflag; 7 void g(int a){cout << a << endl;} 8 } 9 10 namespace owl 11 { 12 int inflag; 13 void g(int b){cout << b << endl;} 14 } 15 using namespace mfc; 16 17 int main() 18 { 19 inflag = 1; 20 owl::inflag = 2; 21 cout << inflag << endl;//1 22 cout << owl::inflag << endl;//2 23 g(1);//1 24 return 0; 25 }
三.操作符
1 #include<iostream> 2 #include <string> 3 #include <iomanip>//操作符 4 using namespace std; 5 6 int main() 7 { 8 double a = 3.1415; 9 double b = 2.2222; 10 string str; 11 12 //cout << right右对齐,cout << left左对齐,默认右对齐 13 cout << setw(8) << a << endl;//空格空格3.1415,设置字段位数 14 cout << setfill(‘c‘) << setw(8) << a << endl;//cc3.1415,填充字符 15 cout << setw(8) << a << endl;//cc3.1415 16 cout << setprecision(2) << a << endl;//3.1,设置字段精度 17 cout << setprecision(2) << fixed << a << endl;//3.14,小数点后精度 18 cout << showpoint << 2.2 << endl;//2.20,强制显示小数点及尾部0,可以用noshowpoint取消 19 cout << scientific << 33.33 << endl;//3.33e+001 20 21 cout << hex << 16 << endl; // 10 22 cout << oct << 8 << endl; // 10 23 cout << dec << 0x10 << endl; // 16 24 25 return 0; 26 }
四.文件
1 #include<iostream> 2 #include<fstream> 3 using namespace std; 4 5 int main() 6 { 7 ifstream infile; 8 ofstream outfile; 9 10 int num; 11 infile.open("E:\\1.txt"); 12 outfile.open("E:\\2.txt", ios::app); 13 /* 14 ios::out输出到文件删除原有内容 15 ios::binary以二进制格式打开文件 16 ios::app输出到文件保留原有内容 17 */ 18 19 if (! infile)//测试文件是否成功打开 20 { 21 cerr << "Error" << endl; 22 } 23 while (infile >> num) 24 { 25 cout << num << endl; 26 outfile << "Num = " << num << endl; 27 /* 28 Num = 1 29 Num = 2 30 Num = 3 31 Num = 4 32 Num = 5 33 */ 34 } 35 36 infile.close(); 37 outfile.close(); 38 39 40 return 0; 41 }
五.若干特性
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 bool flag = false; 7 cout << flag << endl; // 0 8 cout << boolalpha << flag << endl; // false,boolalpha强制让bool类型输出true和false 9 return 0; 10 }
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 int main() 6 { 7 //枚举 8 enum Num{MinSize = 0, Mid, MaxSize = 1000, Last}; 9 Num x, y; 10 int i = MinSize, j = MaxSize; 11 cout << i << " " << j << endl; // 0 1000 12 cout << Mid << " " << Last << endl;//1 1001 13 14 //结构体默认public 15 struct Point1 16 { 17 }; 18 Point1 p1, p2; 19 20 typedef struct Point2 21 { 22 }*P; 23 P p3, p4; 24 25 //const 26 int b = 100, c = 1000; 27 28 const int *a = &b; 29 *a = 4;//error 30 a = &c; 31 b = 4; 32 33 int *const d = &b; 34 *d = 4; 35 d = &c;//error 36 37 return 0; 38 }
时间: 2024-10-06 23:24:57