C++课堂整理--第一章内容

提前声明:

本文内容为华北水利水电大学研究生C++课程,如有 侵权请告知,作者会予以删除

1.C++特点

1.历史悠久。2.应用广泛。3.兼容c。4.面向对象。5.适合编写系统程序。6.有助于理解计算机的工作过程,深入理解计算机的原理和概念

2.各种开发语言的优缺点 

编程语言

优点

缺点

移植性

C

编写小而快的程序, 程序运行效率非常高;很容易与汇编语言结合;具有很高的标准化。

不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。

C语言的核心具有很好移植性

C++

组织大型程序时比C语言好。支持面向对象机制。运行效率高。

非常大而复杂。与C语言一样存在语法滥用问题。

比较好

汇编语言

最小、最快的语言。

难学、语法晦涩。额外代码太多。

接近零

VB

编辑环境整洁。易学。拥有大量可用的插件。

程序很大,而且运行时需要几个巨大的运行时动态连接库。调用WindowsAPI非常笨拙。

非常差

JAVA

可移植到其他平台。程序可以在网页中运行。内含的类库非常标准且极其健壮。自动分配和垃圾回收避免程序中资源泄漏。

使用一个“虚拟机”来运行可移植的字节码而非本地机器码,程序将比真正编译器慢。

最好。但,很多新功能在某些平台上不稳定。

C#

简化和现代化了C++在类、名字空间、方法重载和异常处理等领域。屏弃了C++的复杂性。

C#编写的程序必须运行在.NET平台

 3.举例子:输入圆的半径,求圆的周长和面积

3.1一般方法

/* 注释方法一 
this is a simple program
   count the girth and area of circle */
// 注释方法二   count the girth and area of circle
#include<iostream>//预编译指令 
using namespace std ;//使用标准命名空间
int main ()//函数头;int 函数返回值类型;main  主函数名,系统预定义;参数表(没有参数不能省略圆括号)

{ double r, girth, area ; 		
   const double PI = 3.1415 ;
   cout << "Please input radius:\n" ;
   cin >> r ; 
   girth = 2 * PI * r ; 
   area = PI * r * r ;
   cout << "radius = " << r << endl ; 
   cout << "girth = " << girth << endl ;
   cout << "area = " << area << endl ;
}
/*函数体:{}
 花括号相括的语句序列
 各语句以分号结束(大家经常会忘记的) 
 一行可以写多个语句
 一个语句可以分多行书写*/
/*
函数是程序基本运行单位,一般形式为:
类型  函数名  ( 参数表 )
{
       语句序列 
} 
*/ 

运行结果

 3.2面向对象(代码与课堂内容不同,有些许改动)

//利用面向对象的思想进行计算圆的周长和面积 
#include<iostream>
using namespace std ;
class Circle
{  double radius ;
  public ://定义类的类的公有成员 
    void Set_Radius( double r ) { radius = r ; }
    double Get_Radius()  { return  radius ; }
    double Get_Girth()     { return  2 * 3.14f * radius ; }
    double Get_Area()     { return  3.14f * radius * radius ; }
} ;
int main()
{
   double r; //定义半径变量 
   cout << "Please input radius:\n" ;
   cin >> r ;  //输入圆的半径 
   Circle A;//实例化圆的对象 
   A.Set_Radius(r) ;//调用类中公有成员方法进行圆的半径设置 ; 通过对象调用类的成员函数
   cout << "A.Radius = " << A.Get_Radius() << endl ;
   cout << "A.Girth = " << A.Get_Girth() << endl ;
   cout << "A.Area = " << A.Get_Area() << endl ;
}

运行结果如下

 4.关键词(保留字)

关键字是系统预定义的单词。C++不允许对关键字重定义。

C++常用的关键字:

auto    break    case    char    class    const    continue    default    delete    else

enum    explicit    extern    float    for    friend    goto    if    inline    int    long

new    operator   private    protected    public    register    return    short    signed

sizeof    static    struct    switch    this    typedef    union    unsigned    virtual   

void    while

5.标识符 

语法:以字母或下划线开始,由字母、数字和下划线组成的符号串

注意:1.不能使用关键字作用户标识符;2.C++中,字母大小写敏感;(Name与name不同)3.C++没有规定标识符的长度,不同编译系统有不同的识别长度;4.标识符尽可能做到见文知义。

6.运算符

+  加    -  减   *  乘    /  除  >  大于 <  小于  >=  大于或等于  ==  等于  != 不等于   <=  小于或等于

7分隔符

用于在程序分隔不同的语法单位,便于编译系统的识别;常用的分隔符有:空格,逗号,分号,冒号,括号,注释符等

8.常数

基本类型常数在程序运行时直接参与运算,不占用内存存储

9.数据类型

 9.1常用数据类型描述

1字节=8bit 

9.1.1整型

9.1.1.1int 

类型

说明

字节

范围

short [int]

短整型

2

-3276832767

signed short [int]

有符号短整型

2

-3276832767

unsigned short [int]

无符号短整型

2

065535

int

整型

4

-21474836482147483647

signed [int]

有符号整型

4

-21474836482147483647

unsigned [int]

无符号整型

4

04294967295

long [int]

长整型

4

-21474836482147483647

signed long [int]

有符号长整型

4

-21474836482147483647

unsigned long [int]

无符号长整型

4

04294967295

十进制 -45L    八进制 045 十六进制 0xA1e=10×162+ 1×161+14×160 = 2590

9.1.1.2 bool

逻辑类型只有两个值:true   false

9.1.1.3 enum

枚举类型

示例:

#include <iostream>
using namespace std;
//colour类型标识符 {}枚举常量 
enum colour{ red, yellow, blue, white, black };
int main()
{ colour c;//枚举类型变量 
  c=red;
  cout<<"red: "<<c<<endl;
  c=blue;
  cout<<"blue: "<<c<<endl;
  c=black;
  cout<<"black: "<<c<<endl;
}

运行结果

 9.1.2浮点型

 float  4 字节  单精度浮点型 

double  8 字节  双精度浮点型

long double   8 字节  长双精度浮点型

科学计数方式:1.23E10=1.23×1010  0.23E-4=0.23×10-4 0.23E-4f=0.23×10-4  ( 单精度 )

45.e+23L=45.0×1023 ( 双精度 )

9.1.3字符型

char 空格符" ";空字符”“;

C++常用转义字符

名称

字符形式

空字符(Null)

\0

0X00

换行(NewLine)

\n

0X0A

换页(FormFeed)

\f

 0X0C

回车(Carriage Return)

\r

 0X0D

退格(BackSpasc)

               \b

 0X08

响铃(Bell)

               \a

 0X07

水平制表(Horizontal Tab)

\t

 0X09

垂直制表(Vertical Tab)

\v

 0X0B

反斜杠(backslash)

\\

 0X5C

问号(question mark )

\?

 0X3F

单引号(single quote)

 \′

 0X27

双引号(double quote)

 \〞

 0X22

10变量

既能读又能写的内存对象,称为变量;int x;int y=0;(赋初始值)
若一旦初始化后不能修改的对象则称为常量。
程序中使用内存单元存放数据。程序可以对存储单元以标识符命名
内存单元由操作系统按字节编号,称为地址
一个对象占有内存的第一个字节的地址称为对象的地址
可以通过对象名或地址访问对象

11地址访问

1.程序被编译后,系统对已声明对象保存一张名表,登记对象的属性< 名字,类型,地址 >

2.double  b ;< b, double, 0X0066FDEC >名字b所标识的浮点型对象;地址0X0066FDEC所指的浮点型对象

&为取址运算符 *间址运算符

取对象b的地址:  &b;访问对象b  b     *(&b)

例子:

#include<iostream>
using namespace std ;
int main()
{ 
   int a = 451 ;
   const int MAX = 1000 ;//const常量 
   cout << a << endl ;	
   cout << ( &a ) << endl ;
   cout << *( &a ) << endl ;
   cout << &MAX << endl ;
   cout << MAX << endl ;
   cout << * ( &MAX ) << endl ;
} 

12.程序存储

地址是存放信息数据的内存单元编号(编码)
C++ 程序通过名字(变量或函数名)来使用内存
变量的地址:用取地址运算符 & 来获取
数组的地址:用数组名来表示
函数的地址:用函数名来表示

13.指针变量

指针类型变量——能够存放对象地址的变量,简称“指针变量”

指针变量也分为不同的类型

int  *p1 , *p2 (*代表指针类型说明);与 int a,b;差不多 a=*p1+*p2(*代表间址运算(指针运算))

例子

# include <iostream>
using namespace std ;
int  main ( )
{ int   i ,  * p ;
   p = & i ;
  * p = 5 ;
  cout << i << endl ;
  cout << * p << endl ;
  cout << p << endl ;
  cout << & i << endl ;
}

 

 

 13.1指向指针的指针

#include<iostream>
using namespace std ;
int main()
{ int ****p4, ***p3, **p2, *p1, i = 3 ;
   p4 = &p3;  
   p3 = &p2;  
   p2 = &p1;  
   p1=&i;
   cout << ****p4 << endl ;
}

13.2指针类型转换

示例

#include<iostream>
using namespace std ;
int main()
{ int a = 65 ;
   int * ip ;
   void * vp = &a ;//void 指针变量能够存放任意内存地址。
   cout << * ( int * ) vp << endl ;//强制类型转换
   cout << * ( char * ) vp << endl ;
   ip = ( int * ) vp ;
   cout << ( * ip ) << endl ;
}

14引用

int &ra=a;ra是a的别名只能在定义时初始化

示例

#include<iostream>
using namespace std ;
int main ()
{ int a = 2345 ;
   int *pa ;
   int & ra = a ;
   pa = & a ;
   cout << a << '\t' << ra << '\t' << *pa << endl ;
   cout << (&a) << '\t' << ( & ra ) << '\t' << pa << endl ;
   cout << ( &pa ) << endl ;
}

 

 15常量

15.1常量指针

关键字 const 约束对象的访问性质,使对象值只能读,不能写

指针常量的值只能在定义的时候初始化

指针本身和所指对象的值在定义之后都限制为只读

例如:const double PI = 3.14159 ;

#include<iostream>
using namespace std ;
int  main ()
{  
    const  int  A = 78 ;
    const  int  B = 25 ;
	int  C = 13 ;
	//---------const在数据类型前-------------------- 
	const  int  *pi = &A ;
	//*pi = 56 ;// 错误, 不能修改所指常量。此时*pi指向的是常量A。 
	pi = &B ;
	pi = &C ;
	// *pi = 99 ;// 错误,不能用间址方式修改对象。此时的常量指向的是变量C。 
	C = 99 ;
	cout << " *pi = " << *pi << endl ;
	//总结 const  int这样定义的指针不能修改内容,但能修改所指的位置 
	cout << "----------------------------------------" << endl ;
	
	//------------const在*之后 ----------------------
	int  *const D = &C ,  *p ;//此处的*p没有被常量化 
    *D = 1000 ;     //此时D指针指向的是C变量 
    cout << "*D = " << *D << endl ;
	p = new  int ;//自己开辟一个新的整数空间  
	*p = 2000 ;
    // D = p ;	//错误 , 不能对地址进行修改 
    p = D ;
	cout <<" *p = " << *p << endl ;
    //总结 int *const 这样定义的指针能修改内容,但不能能修改所指的位置 
    cout << "----------------------------------------" << endl ;
    
	//----------const在数据类型前和在*之后 ------------
    const  int  * const  E = &C ;
    // *E = 1000 ;//错误,间址访问为只读
 	// E = &C ;//错误,不能修改指针常量
    C = 1000 ;
    cout << " E = " << *E << endl ;
    const  int  * const  F = &A ;
    //F = &C ;
    // *F = 0 ;
    cout << "F= " << *F << endl ;
    //总结 int *const 这样定义的指针不能修改内容,但不能能修改所指的位置 
    cout << "----------------------------------------" << endl ;
}

 15.2常量引用

#include<iostream>
using namespace std ;
int  main ()
{  
int a=314;
const int & ra=a;	//ra是a的常引用
//ra=618;	//错误,不能通过常引用对对象a执行写操作
a=618; 
}

16表达式

表达式可以分为:算术表达式、逻辑表达式、赋值表达式、条件表达式、逗号表达式

算术运算符

+    -    *    / (截取整数部分)%(求余数)    ++    --

关系运算符

>    <    ==    >=    <=    !=

逻辑运算符

!    &&    ||

位运算符

<<    >>    ~    |    ^    &

赋值运算符

=   及扩展的复合运算符

条件运算符

?  :

逗号运算符

指针运算符

*    &

求字节运算符

sizeof

强制类型转换符

类型

分量运算符

.    ->

下标运算符

[]

其他

()    ::    new    delete

优先级

运算符

1

( )    [ ]    ->    : :

2

!   ~   +   -   ++   --   &   *    类型    sizeof  new   delete   .    ->    *

3

*    /    %

4

+    -

5

<<    >>

6

<    <=    >=    >

7

8

==    !=

9

&

10

^

11

|

12

&&

13

||

14

? :

15

=    *=    /=    +=    -=    |=    <<=    >>=

16

,

16.1自增和自减

自增、自减算符的运算对象只能是整型变量,不能为常量或表达式;

前缀式(先增值后引用 )   x = ++ i           相当于  i = i + 1 ;    x = i ;

 后缀式(先引用后增值)   x = i ++           相当于  x = i ;     i = i + 1 ;   

示例

#include<iostream>
using namespace std ;
int  main ()
{  
	int  a = 3 ;
	int  b = ++ a ;		// 相当于 a = a +1 ;  b = a ;//a=4
	int  c = a ++ ;		// 相当于 c = a ;  a = a + 1; //4=5 
	b = a -- ;		// 相当于 b = a ;  a = a - 1 ;//a=4
	cout << "a=" << a << '\t' << "b=" << b << endl ;
	c = -- a ;			// 相当于 a = a - 1;  c = a ;//a=3
	cout << "a=" << a << '\t' << "c=" << c << endl ;
	//++ ( a ++ ) ;		// 错 (a++)不是变量名
	c = a + + b;		// 错 a++ 无法对 b 操作//a=4
	cout << "a=" << a << '\t' << "b=" << b << '\t' << "c=" << c<< endl ;
	c = a ++ + b;		// 相当于 c = a + b;  a = a + 1;//a=5
	cout << "a=" << a << '\t' << "b=" << b << '\t' << "c=" << c<< endl ;
	c = a + + + + b;		// (a++) ++b 错
	cout << "a=" << a << '\t' << "b=" << b << '\t' << "c=" << c<< endl ;
}

 16.2类型转换

强制类型转换

int ( x + y )        ( char ) 70       ( double ) ( 2 / 4 )

 16.3关系运算符

1.说明数学含义 x在区间[a, b] 的数学表达式  a ≤ x ≤ b, 不能使用    a <= x <= b 表示,应该使用  a <= x && x <= b 表示

2.字符数据按ASCⅡ码值进行比较 'A' > 100  值为 0 (false

16.4逻辑运算

 16.5赋值表达式

1.  x = y = z + 2 ;先计算z+2,然后将z+2赋值给y,最后将y赋值给x

2.  A = A  op  B 可以缩写成  A  op =  B

16.6条件表达式

E1 E2 : E3 (E1为真,表达式的值为E2,否则为E3

把字母转换成小写:   ch = ( ch > = 'A' && ch < = 'Z') ? ( ch + 32 ) : ch

16.7运算符优先级

单目运算符   

乘除运算

加减运算

关系运算

逻辑与

逻辑或

赋值

逗号

i +1 < j * 4 && ! P || Q  等价于  :    ( ( ( i +1 ) < ( j * 4 ) ) && ( ! P ) ) || Q

P != i < j || Q && S  等价于  ( P != ( i < j ) ) || ( Q && S )    注意逻辑与和逻辑或的优先级

17数据输入与输出

1.cin cout 是流库预定义的两个标准对象,分别连接键盘和屏幕

17.1常用的输出格式控制符

控制符

功能

endl

输出一个新行符,并清空流

ends

输出一个空格符,并清空流

dec

用十进制表示法输入或输出数值

hex

用十六进制表示法输入或输出数值

oct

用八进制表示法输入或输出数值

setfill ( char c )

设置填充符c

setprecision ( int n )

设置浮点数输出精度(包括小数点)

setw ( int n )

设置输出宽度

示例

#include<iostream>
#include<iomanip>		//包含格式输出文件
using namespace std ;
int main()
{ int a,b,s;			//说明数据
  cout.setf(ios::showbase);		//要求输出显示基数符
  a=01137;  b=023362;  s=a+b;	//计算两个八进制数的和
  cout<<"八进制   ";
  cout<<oct<<a<<"+"<<b<<"="<<s<<endl;//以八进制显示结果
  a=239;  b=5618;  s=a+b;		//计算两个十进制数的和
  cout<<"十进制   ";			//以十进制显示结果
  cout<<dec<<a<<"+"<<b<<"="<<s<<endl;
  a=0x1a3e;  b=0x4bf;  s=a+b;	//计算两个十六进制数的和
  cout<<"十六进制 ";
  cout<<hex<<a<<"+"<<b<<"="<<s<<endl; //十六进制显示结果
}	

 18小结

1.程序主要功能是描述数据和处理数据。
2.数据表现为常量和变量。所有的常量、变量都属于某种数据类型。类型决定了数据的操作方式。
3.对数据的读写通过内存访问实现。 C++ 提供名访问和地址访问方式。可以通过指针变量间址访问4.所指对象。
5.引用是对象的别名。用引用访问对象与名访问方式一样。
6.关键字 const 用于约束对象为只读。
7.运算符表示了系统提供对基本数据的操作。表达式是由常量、变量和运算符连结起来,表达一个计算值的式子。
8.C++ 用标准流对象实现数据的输入和输出。输入语句,输出语句和表达式语1.句可以构成顺序执行的简单程序。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z_W_H_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值