第二章 C语言复习及C++基础知识
第二章 C语言复习及C++基础知识
21C++的起源和特点 211C++的起源 212C+的特点 C的源程序 以下的文件C和C++都可用: h C的头包含文件 cppC++的源程序 hppC++的头包含文件 /C的注释 C++的注释
2.1.1 C++的起源 2.1.2 C++的特点 *.c C的源程序 以下的文件C和C++都可用: *.h C的头包含文件 *.cpp C++的源程序 *.hpp C++的头包含文件 /* */ C的注释 // C ++的注释 2.1 C++的起源和特点 1
22C+源程序的构成 221C++程序的一般格式 〖例21〗说明C++构造的示例程序 include∥系统头文件 int add(int a, int b); /数原型的说明 int main( ∥函数 Int x, y,sum; ∥定义三个整型变量 cout>X; ∥从键盘输入变量x的值 cIn>>y; ∥从键盘输入变量y的值 sum=add(x, y); ∥调用函数dd将函数返回值赋给变量 sum cout<"二数和是:"<<sum<<m';/输出 return 0 int add (int a, int b) ∥定义函数add,函数(返回)值为整型 i int cs /定义临时变量c c=a+b ∥和 return c ∥将c的值返回,通过add带回调用处2
2.2 C++源程序的构成 2.2.1 C++程序的一般格式 〖例2.1 〗说明C++构造的示例程序 #include // 系统头文件 int add(int a, int b); //函数原型的说明 int main( ) //主函数 { int x,y,sum; //定义三个整型变量 cout>x; //从键盘输入变量x的值 cin>>y; //从键盘输入变量y的值 sum=add(x,y); //调用函数add,将函数返回值赋给变量 sum cout<<"二数和是:"<<sum<<'\n'; //输出 return 0; } int add(int a, int b) //定义函数add,函数(返回)值为整型 { int c; //定义临时变量c c=a+b; //求和 return c; //将c的值返回,通过add带回调用处 } 2
222C++程序的结构特点 注释 2包含文件及头文件 3语句 4标准输入与输出 printf(格式说明,表达式表列); scant(格式说明地址表列); cout. 5新行 ln” endl 6主函数 void main(i..) 7.一般的函数 函数头 int add(inta,intb) 函数体{intc;∥变量定义 c=a+b;/.行部分 return c
2.2.2 C++程序的结构特点 1.注释 2.包含文件及头文件 3.语句 4.标准输入与输出 printf(格式说明 ,表达式表列); scanf(格式说明 ,地址表列); cout> 5.新行“\n” endl 6.主函数 void main( ) {…….} 7. 一般的函数 函数头 int add (int a, int b) 函数体 { int c; //变量定义 c=a+b; //执行部分 return c; } 3
23C++在非面向对象方面的一些特性 23.1注释行 k /C的注释 C++的注释 232新的JO流 cin是标准输入流,在程序中代表标准输入设备,即键盘。 运算符“>>”表示向右 cout是标准输出流,在程序中代表标准输出设备,即屏幕。 运算符“ ∥23 int maino #include i char name 20]; void maino cout>name cout<<hex<<x<<k<<dec<<x<<<<oct<< cout<<name<<endl x<<"\mn' return u 4
2.3 C++在非面向对象方面的一些特性 2.3.1 注释行 /* */ C的注释 // C ++的注释 2.3.2 新的I/O流 cin是标准输入流,在程序中代表标准输入设备,即键盘。 运算符“>>”表示向右 cout是标准输出流,在程序中代表标准输出设备,即屏幕。 运算符“ int main( ) { char name[20]; cout>name; cout void main( ) { int x=25; cout<<hex<<x<<’'<<dec<<x<<''<<oct<< x<<'\n'; } 4
233灵活的局部变量说明 int f( f int i; 10 int j=25: for(intk=5;k>=0;k-)…… 以上的写法在C程序中都是错误的,但在C++程序中都是正确的 5
2.3.3 灵活的局部变量说明 int f( ) { int i; i=10; int j; j=25; for(int k=5;k>=0;k--) ….. ……. } 以上的写法在C程序中都是错误的,但在C++程序中都是正确的。 5
234结构、联合和枚举名可直接作为类型名 定义枚举类型名: enum bool FaLse, true; 定义结构枚举类型名: Struct student i int sno: char *sneme; C语言中定义枚举类型变量: enum bool done; 定义结构类型变量: struct student s1,s2; C++语言中定义枚举类型变量: bool done; 定义结构类型变量: student s1,s2;
2.3.4 结构、联合和枚举名可直接作为类型名 定义枚举类型名: enum bool {FALSE, TRUE}; 定义结构枚举类型名: Struct student { int sno; char *sneme; }; C语言中定义枚举类型变量: enum bool done; 定义结构类型变量:struct student s1, s2; C++语言中定义枚举类型变量:bool done; 定义结构类型变量:student s1, s2; 6
235 const修饰符 #define limit 100 这里LMI是一个标志,代表100 const int LMMIT=100: 这里LIMT是一个常量名,在内存有空间放了100,因此有地址, 可以用指针指向这空间,但不能修改它。 int i=100: 这里i是一个变量名,在内存有空间放了100,因此有地址,可以 用指针指向这空间,且可以改放别的整数。 (1)可以用一个指向常量的指针变量指向常量: const char *name=“chen”; name3l-a';∥错误 nam chen 常量 name=“ Zhang”;/l确 常量 (2)指针常量 ang char const name=“chen”; name3]=a';∥l确 nam chen name=“ Zhang”;∥{误 常量 3) const char *const name=“chen”; zhang
2.3.5 const修饰符 #define LIMIT 100 这里 LIMIT 是一个标志,代表100 const int LIMIT=100; 这里 LIMIT 是一个常量名,在内存有空间放了100,因此有地址, 可以用指针指向这空间,但不能修改它。 int i=100; 这里 i 是一个变量名,在内存有空间放了100,因此有地址,可以 用指针指向这空间,且可以改放别的整数。 (1) 可以用一个指向常量的指针变量指向常量: const char *name=“chen”; name[3]=‘a’; //错误 name=“zhang”;//正确 (2)指针常量 char *const name=“chen”; name[3]=‘a’; //正确 name=“zhang”; //错误 (3) const char *const name =“chen”; nam e chen 常量 zhang 常量 X n nam a e chen zhang 常量 a na X 7
∥824 #include main nt a=l #define ti a+a #define t2 t1-t1 cout maIn i int a=l; const Tl=a++a; const T2=T1-T1 cout<<t2 is <<T2<<endll return 0 8
// 例2.4 #include main( ) { int a=1; #define T1 a+a #define T2 T1 -T1 cout main( ) { int a=1; const T1=a+a; const T2=T1 -T1; cout<<"T2 is "<<T2<<endl; return 0; } a+ T2 a a+a T1 -T1 8
236内置函数 ∥82.6 #include inline float circle(float r) int maino 代码嵌入{rmrm31416rr; i for(int i=l; K<=3; i++) A cout<<r=n<<K<< area="<<circle(i<<endl turn o 9
2.3.6 内置函数 //例2.6 #include int main( ) 3次 { for(int i=1;i int main( ) 代码嵌入 { for(int i=1;i<=3;i++) cout<<"r="<<i<<" area="<<circle(i)<<endl; return 0; } float circle(float r) { return 3.1416*r*r; } inline float circle(float r) { return 3.1416*r*r; } 9