C++入门Day3:语句及简单OOP

#include <iostream>

int main()
{
    using namespace std;

    int carrots;

    carrots = 25;
    cout << "I have ";
    cout << carrots;
    cout << " carrots.";
    cout << endl;
    carrots = carrots - 1;
    cout << "Crunch,crunch.Now I have " << carrots << " carrots." << endl;
    return 0;
}

 运行结果:

I have 25 carrots.
Crunch,crunch.Now I have 24 carrots.

首先引入一个概念:

C++程序中最小的独立单位是语句(statement)。它相当于一篇文章中的一个句子。句子是用句号结束的。语句一般是用分号结束的(复合语句是以右花括号结束的)。

一、声明语句和变量

1.声明语句

定义

声明语句(declaration statement)是用来引入或定义程序中标识符(如变量、函数、类型等)的语句。在C++中,声明语句告诉编译器某个变量、函数或对象的存在及其类型,但通常不会为其分配存储空间(除非是定义)。

int a;  // 声明了一个整型变量a

注:在 C++ 中,所有变量都必须声明

定义语句提供的两个信息

  1. 需要的内存int 表示整数,后面会学到,int 通常占用 4 字节的内存空间(具体取决于系统和编译器)。
  2. 该内存单元的名称变量名为 a,以后可以通过 a 来访问这块内存。

程序中的声明语句叫定义声明语句,简称为定义。

声明与定义的区别

  • 声明仅仅是告知编译器标识符的存在,如变量或函数的类型,但不一定为其分配内存
  • 定义不仅告知编译器标识符的存在,还为其分配内存(例如定义变量函数)。

2.变量

什么是变量?顾名思义,是一种可以变化的量。在编程中,变量本质上是一个命名的内存位置,用于存储数据。我们给内存中的某个位置一个名称,这样就可以通过这个名字轻松地访问或修改存储在该位置的数据。

变量是程序中的一个命名存储位置,用于存储可以改变的数据值。在C++中,变量的类型决定了它可以存储的数据类型,以及该变量占用的内存空间。

有关变量的内容,下篇博客再细讲。

二、赋值语句

carrots = 25;

定义

赋值语句(assignment statement)是用于将某个值赋给内存单元的语句。

赋值运算符

符号 = 叫做赋值运算符。再 C++ 中,可连续使用赋值运算符。

例如,这样写是完全合法的:

a = b = c = 20;

赋值操作从右往左进行。在这里,首先,20 赋给 c,c(现在是 20)赋给 b,b(现在也是 20)赋给 a。

复合赋值运算符

细心的读者可能会发现这个特殊的赋值语句:

carrots = carrots - 1;

我们来解析一下这个语句:将 carrots - 1 的值再次赋给 carrots ,也就是说,carrots 相较于原来减少了1。

复合赋值运算符(compound assignment operators)是C++中一种简化赋值运算的方式,它将运算符与赋值运算符 = 结合在一起,形成 += , -= , *= , /= 和 %= 。既进行运算,又进行赋值操作。使用复合赋值运算符可以减少代码量并提高可读性。

至于这些符号是什么意思,以后再讲。

三、cin 的使用

cin >> carrots;

和 cout 一样,在使用 cin 之前,也必须引用 iostream 头文件,也就是说, cin 属于输入流的一种。

也就是说,这条语句的意义是将信息传入到变量 carrots 当中。

四、cout 的拼接

cout << "Now you have " << carrots << " carrots" << endl;
cout << "Now you have "
     << carrots
     << " carrots"
     << endl;
cout << "Now you have ";
cout << carrots;
cout << " carrots";
cout << endl;

以上三种情况的输出完全一致,一般来说,根据有关 cout 的建议,一般使用第二种方式。

五、简单 OOP —— 类简介

至此,我们开始步入面向对象编程( OOP )的殿堂了。

是面向对象编程(OOP)中的一个核心概念,代表一种用于定义对象模板或蓝图。类描述了一组具有相同特性和行为的对象的结构,规定了对象的属性(数据成员)和功能(成员函数)。

类的定义与对象

  • 是一个抽象的定义,用于描述事物的共性。类本身不占用实际内存,直到创建了对象(实例)。
  • 对象是类的具体实例。通过类的定义,可以创建多个对象,每个对象都有类中的属性和方法。
int a;

例如,前面说的变量声明,是类的成员变量。

说实话,这里安排学习类,我觉得有些不妥。对于我来说,有一些难理解。

可参见:

【C/C++】详解 类和对象的概念、基本用法_c类和对象-优快云博客文章浏览阅读5.2k次,点赞29次,收藏81次。文章介绍了C++中的面向对象编程概念,包括类和对象的定义,以及如何通过类创建对象。同时,详细讲解了类成员的访问修饰符,如public、private和protected,强调了它们在控制成员访问权限和封装性方面的作用。通过示例展示了如何定义和使用类,以及如何避免因访问控制不当导致的编译错误。https://blog.youkuaiyun.com/TiSg0/article/details/131331096?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522E213BA89-4530-4252-A4E6-4AF411EE692A%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=E213BA89-4530-4252-A4E6-4AF411EE692A&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-131331096-null-null.142%5Ev100%5Epc_search_result_base5&utm_term=C%2B%2B%E7%B1%BB&spm=1018.2226.3001.4187

六、函数

C++ 函数分为两种:

  • 有返回值的
  • 无返回值的

1.有返回值的函数

x = sqrt(6.25);

表达式 sqrt(6.25) 表示要调用 sqrt() 函数

表达式 sqrt(6.25) 称为函数调用;

被调用的函数叫做被调用函数

包含函数调用的函数叫做调用函数

圆括号中的值是参数列表,是发送给变量的信息

将函数的计算结果的值赋给 x ,赋给 x 的值被称为返回值

简单来地说,参数是发送给函数的信息,返回值是从函数发出的信息。

在使用 sqrt() 时,必须提供原型,可以通过以下方法实现:

  • 在源代码文件中输入函数原型;
  • 包含头文件 cmath ,其中定义了原型。

函数原型(Function Prototype)是在C++中用于声明函数的方式,告诉编译器该函数的名称、返回类型、参数类型等信息,便于在函数定义之前使用该函数。它类似于函数的“声明”,而不是具体的实现。函数原型通常放在程序的开头,或者放在头文件中,主要用于在实际调用函数之前告知编译器函数的结构。

但是,函数 sqrt() 到底是什么意思呢?

sqrt() 是 C++ 标准库中用于计算平方根的函数,属于 <cmath> 头文件。该函数接受一个非负数作为参数,并返回该数的平方根

我们都知道,一个数的平方根有正、负两个,但是,sqrt() 仅返回该数的正平方根

我们可以说:

sqrt() 返回该数的算数平方根

在上面的例子中,函数的参数 6.25 是一个浮点数,返回值 2.5 也是一个浮点数,所以,我们可以倒退 sqrt() 的函数原型为:

double sqrt(double);

在编写函数时,必须定义参数类型返回值类型。在这里,参数类型和返回值类型都为double。

 2.函数变体

前面提到,圆括号是参数列表,之所以称之为列表,是因为有些函数可以接受多个参数。也就是说,下面这样是完全合法的。

double pow(double,double);//函数原型
answer = pow(5.0,8.0);

函数 pow() 接受两个参数,前者为底数,后者为指数。

补习初中知识

前面提到过,我们可以用关键字 void 指出函数不接受参数或无返回值。

3.用户定义的函数

C++提供了 140 多个库函数,有时候,我们需要自己定义函数来满足需求。

1)函数格式

type functionname (argumentlist)
{
    statements
}

2)函数头

有关函数头的知识,Day2 中做了详细介绍,这里不再赘述,感兴趣者移步上一篇博客:

C++入门Day2:初识C++-优快云博客文章浏览阅读688次,点赞27次,收藏18次。本博客主要写了C++中预处理器、头文件、命名空间、main() 函数和 cout 等内容https://blog.youkuaiyun.com/linmohan0814/article/details/143030309?spm=1001.2014.3001.5501

3.用户定义的有返回值的的函数

int stonetold(int sys)
{
    int pounds = 14 * sys
    return pounds;
}

在这个程序中,关键字 return 将 pounds 的值作为返回值,也就是说,函数 stonetold(int sys) 的返回值为 14 * sys。

这时候,我们再进行这样的操作:

int number = stonetold(4)

计算结果就是 56,也就是说,number 的值就是 56。

虽然函数 stonetold() 短小简单,但是它包含了函数的所有特征:

  • 有函数头和函数体;
  • 接受一个参数;
  • 返回一个值;
  • 需要一个原型。

关于函数更深奥的东西,以后再细讲。

七、共勉

本篇博客是自我学习笔记,如果后续能够有人能够从中汲取到知识和收获,这也是我所希望的。如果有读者不懂或有问题的话,欢迎提出来,让我们一起讨论。同时,我将继续更新 C++ 入门学习系列笔记,敬请期待。

谢谢!

拔叔镇楼

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值