优秀的编程知识分享平台

网站首页 > 技术文章 正文

c++速成,适合有c基础的朋友(c++入门知乎)

nanyue 2024-07-20 00:00:08 技术文章 8 ℃

1.C++程序的整体布局

#include //""中不能有多余的空格

using nameplace std //此处c++特有,c没有。另一种写法是将上述两行写为 #include ,对应较老的版本。如果编译器要求这样的写法可以考虑

int main() //(接上一行)升级编译器。

{

<语句块>;

return 0;

}

c++的注释方式与c相同,对缩进的要求并不像python那样严格。好的缩进习惯可以提高程序的可读性,是应该养成的好习惯。

2.c++基础知识

a.变量和赋值 c++对大小写敏感

此部分与c类次,在此不赘述。在此提醒,变量名尽量起有意义的名称,这样有助于编程,编程时养成写注释的习惯。

b.输入与输出

%1.使用cout进行输出:

eg:cout << number_of_stu << "bedrooms\n"; //可以输出number_of_stu变量的值以及后面的引号中的内容。

等价于:

cout << number_of_stu;

cout << "bedrooms\n";

cout语句中也可以包含表达式,表达式要用“()”括起来。

eg: cout << "the total cost is" << (price+tax);

如果cout语句过长可以变为两行。

eg:cout << "there is" << number_of_bed

<< "beds and" << number_of_table << "tables in the room\n";

%2.转义序列:

使用\来告诉编译器:\后面的符号需要转义,或者消除转义字符默认的意义,只是单纯的显示字符。

常用的转义字符:/n 换行符(endl含义相同)

/t 制表符(跳跃空格)

编程时可以考虑以"/n"来结束,避免下一个程序的输出与这个程序混在一起。

%3.格式化带小数点的数字:

在程序中加入下列指令:

cout.setf(ios::fixed);

cout.setf(ios::showpoint);

cout.precision(2);

就可以输出2位小数点的小数。

%4.用cin进行输入:与cout用法类似:

eg:cout << "Please enter your age:\n";

cin >> age;

可以从键盘输入两个变量,用空格隔开:

eg:cin >> number >> size ;

c.数据类型和表达式

%1.short / int / long / float / double / long double / char 与c相似,不再赘述。

其中需要注意的是,char类型指的是键盘上的任意一个单字符。要用''来表示。'a'与"a"是不一样的,后者为string类,不能用char类型来表示。

编程时涉及到除法运算最好使用float型避免出错。

另外与c不相同的是,声明时可以采用两种方式。 int num=1; or int num(1);

%2 bool类型 只有ture或fales两个值,用于分支语句。

%3 string类简介:

想要使用string类,首先要包含string库:

#include

变量声明与赋值的方式与之前的类似:

string sex;

sex = "female";

这里允许这样的操作:

string day;

day="Monday"+"Tuseday";

得到的day的值为"MondayTuseday"

%4 在这里补充一下为常量命名的规则: 使用const关键字

eg:const int WINDOWS_NUMBER = 10; // 在程序中可以使用名字而不是数字。虽然并未要求常量的命名必须大写,但这已经成为大部分程序员的习惯。

d.简单的控制流程

%1.一个简单的分支机制:

if(Boolean_Expression) //涉及到"&&","||"的使用时注意括号的使用。注意"="与"=="的应用差别。

{

Yes_Statement_1;

Yes_Statement_2;

...

}

else

{

No_Statement_1;

No_Statement_2;

...

}此部分与c语言基本相同。

%2.简单的循环机制

while循环:

while(Boolean_Expression) //当Boolean_Expression的值为false时结束循环,注意这里没有分号。

{

statement_1;

statement_2;

...

}

do_while 循环: 适用于循环体一定要执行一次的场合,不太常见。

do

{

statement_1;

statement_2;

...

}while(Boolean_Expression); //注意此处的分号

%3.递增,递减操作符

n++,n--,++n,--n与c类似。值得注意的是在c++中,它们只能用于单个变量,(x+y)++这种表述是违法的。

%4.多路分支: 多路分支需要注意的就是"{}"的使用,保证if-else的配对正确。

在c++中,{}中的语句被称为一个语句块,块中声明的变量是局部变量。

%5.多路if-else语句:

if(Boolean_Expression_1)

statement_1;

else if (Boolean_Expression_2)

statement_2;

else if (Boolean_Expression_3)

statement_3;

...

else

statement_last;

%6.switch 语句:

switch(controller_expression)

{

case constant_1

statement_sequence_1;

break; //不要忘记break的使用。

case constant_2

statement_sequence_2;

break;

...

default: //可有可无,最好加上可用于显示相关信息。

statement_sequence_last;

}

%7.for语句:

for(intialization_action;boolean_expression;update_action)

body_statement;

eg: for(i=100;i>0;i--) //此处不要加分号,加分号会使得for(i=100;i>0;i--)单独成为一个语句。

count << "there are" << i << "students left in this room\n";

注意使用break同样可以跳出循环。break只终止包含它的最内层循环。

使用到嵌套的循环时,同样需要注意内外层之间的关系。

3.过程抽象和返回一个值的函数:

a.预定义函数: 是指c++之前已有定义的函数,存放在相应的头文件中。使用时要声明包含这样的头文件。

eg:#include

#include

b.强制类型转换: 可以使用函数static_cast()函数将int型转换为double型,以保证相应计算的正确。

eg:candy_per_person=static_cast(total_candy_number)/_of_person;

c.自定义函数:

%1 函数的描述分为两个部分,分别是函数声明和函数定义。函数的声明放在靠前的位置,通常放在main函数之前。

eg: double total_cost (int number_of_basketball, double price_cost_signal); //注意此处的分号

其中形参与实参的问题与c一致。

%2 bool型返回值的函数

函数可以返回一个bool型的值,声明方式如下:

bool 函数名(参数表)

eg:bool app(int race);

函数体可以是这样的:

bool app(int race)

{

return (race>10);

}

注意调用函数时,实参的顺序不能发生错误。

%3 局部变量,全局常量和全局变量

将const int声明的常量放在程序的前端,则声明了全局常量,在任意一个函数中都可以使用。

将const去掉声明的就是全局变量,全局变量的应用容易导致错误,对于不是很有经验的编程者不建议使用。

局部变量是在函数内部定义的,只在函数内部有相应的意义。需要强调的一点是,传值调用形参是局部变量,函数内部对变量的直接操作不会影响函数外部的变量

的值。

%4 重载函数名称

c++允许为同一个函数名提供两个或者更多的定义,这表示可以在不同的情况下重用这些名称。为同一个函数名提供两个或者更多的定义,就称为重载函数名称。

c++的重载简单很多,只要按照一般的函数定义方式在定义一个函数就可以了。重载一个函数名时,两个函数声明的形参必须有所区别,这样编译器才能正确的找到

相应的函数。只用返回类型不一样是不能重载的。不要为两个不相关的函数重载。

4.所有任务函数

a.void 函数

不返回值的函数称为void函数。

void函数声明: void Fuction_Name(Parameter_List);

b.传引用调用形参

使用传值调用形参,用于替换形参的是实参的值(而不是实参本身)。

使用一个传引用调用一个形参时,函数调用中的相应的实参必须是一个变量,用于替换形参的将是一个实参变量,是变量本身。

为了标记一个传引用调用形参,需要在函数声明和函数定义头中,在参数类型后加&。

eg: void get_input(double& f_variable)

{

using namespace std;

count << "please enter a number:\n";

cin >> f_variable ;

}

如果希望函数更改一个变量的值,就使用传引用调用,其余的均可以是用传值调用。

c.使用过程抽象

过程抽象的原则在于将函数写为一个黑盒子,使用者只需要知道他的使用条件和使用结果,不必对其内部的实现方式有所了解。

在为函数写注释的时候,分为前条件和后条件是一种好的手段。前条件的内容是使用函数的必要条件,而后条件可以写函数的运行结果。

d.测试和调试函数

可以编写程序一个一个函数的进行测试,这样能较好的定位错误。如果测试时需要另外的函数,而它还未编写或者还未经过测试,可以写一个stub函数占位:

eg:double price(int number,double cost) //this is a stub

{

return(9.99);

}

e.常规的调试技术

%1.坚决杜绝依靠直觉修改代码以期待改对的心态!!!

%2.定位错误对于调bug有很大的意义。可以战略性的插入cout函数来帮助确定bug的位置。

%3.assert宏

assert宏是确保在assert语句的位置预期条件为true的一条语句。如果条件不服,程序会报错并退出。

要使用assert宏首先要 #include

使用形式:assert(boolean_expression);

注:在#include 之前添加 #define NDEBUG 既可以禁用所有的assert宏。



大家有兴趣学习C/C++的可以私聊我或者关注微信公众号:C语言爱好者


原文链接:https://www.cnblogs.com/ustczd/p/4781235.html

Tags:

最近发表
标签列表