c++学习笔记---02---从一个小程序说起

从一个小程序说起

这一讲的主要目的是帮助大家在C语言的背景知识上与C++建立联系。

问题探索

问题:对一个整型数组求和。

要求:定义一个存储着 n 个元素的数组,要求用C语言完成这个任务。

赶紧的:大家一起动手!

参考:

#include <stdio.h>

int addArray( int array[], int n );

int main()
{
      int data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
      int size = sizeof(data) / sizeof(data[0]);         

      printf("结果是: %d\n", addArray( data, size ));

      return 0;
}

int addArray( int array[], int n )
{
      int sum = 0;
      int i;          

      for( i=0; i < n; i++ )
      {
            sum += array[i];
      }

      return sum;
}

深入一点思考

我们说数组和指针他们的关系很复杂。

在刚才的例子中,我们加点“料”试试~

然后我们还能得出第二个版本的程序:

 1 #include <stdio.h>
 2
 3 int addArray( int *array, int n );
 4
 5 int main()
 6 {
 7       int data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
 8       int size = sizeof(data) / sizeof(data[0]);
 9
10       printf("结果是: %d\n", addArray( data, size ));
11
12       return 0;
13 }
14
15 int addArray( int *array, int n )
16 {
17       int sum = 0;
18       int i;
19
20       for( i=0; i < n; i++ )
21       {
22             sum += *array++;
23       }
24
25       return sum;
26 }

轮到C++了

以上两个程序从本质上来说是相同的,我们得出结论:将函数的参数声明为数组和声明为指针是一样的。

现在我们来考虑一个新的问题:将该程序用C++来实现试试。

 1 #include <iostream>  // ostream  C92 C99
 2
 3 // using namespace std;
 4
 5 int addArray( int *array, int n );
 6
 7 int main()
 8 {
 9       int data[] = {0, 1, 2, 3, 4, 5,6, 7, 8, 9};
10       int size = sizeof(data) / sizeof(data[0]);
11
12       std::cout << "?á1?ê?: " << addArray(data, size) << std::endl;
13
14       return 0;
15 }
16
17 int addArray( int *array, int n )
18 {
19       int sum = 0;
20       int i;
21
22       for( i=0; i < n; i++ )
23       {
24             sum += *array++;
25       }
26
27       return sum;
28 }

程序分析

这个小程序展示了C++对象的第一次使用。对象在哪里?就是这个”cout“。

cout 是一个输出流对象,它是”console out(控制台输出)“的缩写。是属于basic_ostream 类的对象。ostream 类在iostream头文件中定义。

什么是输出流?

其实也就是一个概念,在C++中引入了很多类似的概念:例如数据可以从键盘流入程序,又可以从程序流向屏幕、打印机等~

using namesapce std;

这条指定带给我们一个全新的概念:名字空间。

就是C++标准库所使用的所有标识符(即类、函数、对象等的名称)都是在同一个特殊的名字空间(std)中来定义的。

如果我们没有使用这条指令,我们将需要使用std::cout 这样的语法来调用输出流对象。

不知道大家有没有注意到“<<”这个符号很眼熟?

这个操作符不是C语言里边位运算的左移操作符吗?难道在C++里边改规则了?

事实上不是这样的,它只不过体现了C++的另一个特点:支持重载。重载事实上就是允许我们按照不同的方式使用同一个操作符。我们后边会详细讲解。

时间: 2024-08-07 04:15:20

c++学习笔记---02---从一个小程序说起的相关文章

C语言学习笔记之第一个C程序及编译运行(一)

一.第一个C程序 1>C程序由函数构成 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”.所以,你可以说C语言程序是由函数构成的. 2>C程序的入口 C程序的入口是一个名字叫做main的函数,简称main函数.(为了区分函数,每一个函数都有一个名称)也就是说,不管整个程序中有多少个函数,都是先执行main函数.不管main函数写在文件中间,还是文件末尾,也都是先执行main函数. 注意: 如果一个C程序中没有main函数,那么

Servlet&amp;JSP学习笔记:第一个Servlet程序

第一个Servlet程序代码如下,接着根据这个小程序逐步讲解. import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletReq

学习笔记之03-第一个C程序代码分析

一.代码分析 打开项目中的main.c文件(C程序的源文件拓展名为.c),可以发现它是第一个C程序中的唯一一个源文件,代码如下: 1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 // insert code here... 5 printf("Hello, World!\n"); 6 return 0; 7 } 1.#include <stdio.h> #include 是

OD学习笔记10:一个VB程序的加密和解密思路

前边,我们的例子中既有VC++开发的程序,也有Delphi开发的程序,今天我们给大家分析一个VB程序的加密和解密思路. Virtual BASIC是由早期DOS时代的BASIC语言发展而来的可视化编程语言. VB是由事件驱动的编程语言:就是在可视化编程环境下我们可以绘制一些窗体,按钮,编辑框等控件,然后为这些控件所可能引发的事件如按钮被单击或者被双击编写对应的处理代码. 所有的VB程序几乎都是依赖于一个外部的动态链接库.这个动态链接库的名字是:MSVBVM60.dll(可能有多个版本,但名字都差

学习笔记_第一个strut程序_之中文乱码,过滤器解决方案及过程总结

1.  第一次碰到加过滤器的过程,就是在学习struct1的时候,中文乱码 几个需要注意的关键字 2.什么叫package 所谓package就是打包的意思,就是说以下程序都是处于这个包内,所以一开始你看见src下拉菜单下面都是一些自己建的就是为了分开结构的作用 3.  建好了,就可以在包的下面建子文件,可以是class类文件,也可以是各种jsp,servlet文件. 4.  任何servlet文件或者显示界面文件都要在web.xml文件中进行配置,才能加载进去,而且是自动加载 5.  写代码的

学习笔记之第一个C程序

1.打开Xcode,新建Xcode项目 2.选择最简单的命令行项目 3.输入项目信息 4.选择一个用来存放C程序代码的文件夹 5.运行项目 运行结果如图(控制台输出)

[Unity热更新]ulua学习笔记01:一个小坑

看了一下以前写的文章,发现都好水啊..我也想写出能真正帮到别人的文章,但没办法啊,自己的脑子太笨了..希望可以通过不断学习,终有一天能写出点好文章! 最近在学习unity中的热更新,既然大神都说ulua效率最高(就现在来说),那就学习ulua吧!首先要下载的是ulua的包,现在的最新版本是1.08,而且根据官网上说的,网上流行的1.03/1.05含有大量的bug,所以我选择了最新的版本,谁知道就掉进了第一个坑! 因为是菜鸟,所以先复制一下网上的代码看看效果如何,结果碰到这样的错误: 搜索了这些错

python学习笔记——贰之购物车小程序_客户端

客户端大概流程 :买家系统 首先输入买家他的余额,之后会进行,通过文件里的来余额判断他是否上次消费过.如果有信息,就按照文件里的余额计算,替换掉买家输入的余额,如果没有信息证明客户是第一次来,就用买家输入的余额. 然后循环输出商品下标,和商品信息.客户通过下标来选择商品.选择的商品会被加入到 购物车列表 中,然后通过下标[1]得到商品的金额.计算出消费金额,这个消费金额 如果大于余额 那么 从购物车列表里删除这个商品 告知 余额不足,并提示买多少钱以内的商品.每加进一个商品,都会计算购物车的总金

python学习笔记——贰之购物车小程序_服务端

服务端大概流程:商家系统 用户可以对商品信息 进行 添加 和 修改,修改包括 删除 和修改功能首先读取文件中的商品信息,转化为列表,然后通过提示 对列表进行操作,最后将列表转成字符串保存到文本当中. 商品信息的文件格式没错就是多个两个逗号,暂时没有好的方法, ['Iphone', 5800],['Mac Pro', 9800],['Bike', 800],['Watch', 10600],['Coffee', 31],('pro', 1899), , #读取商品列表f = open('s1.tx

python学习笔记02:运行python程序

1.启动cmd命令行,输入python后回车,运行python解释器: 输入python代码后回车: print('Hello World')