zoukankan      html  css  js  c++  java
  • C++ Primer Plus 6 第二章

     1 // myfirst.cpp--displays a message
     2 
     3 #include <iostream>                           // a PREPROCESSOR directive
     4 int main()                                    // function header
     5 {                                             // start of function body
     6     using namespace std;                      // make definitions visible
     7     cout << "Come up and C++ me some time.";  // message
     8     cout << endl;                             // start a new line
     9     cout << "You won't regret it!" << endl;   // more output
    10 // If the output window closes before you can read it,
    11 // add the following code:
    12     // cout << "Press any key to continue." <<endl;
    13     // cin.get();                                                   
    14     return 0;                                 // terminate main()
    15 }                                             // end of function body

    对上面的代码进行讲解:

    1,第一行的双斜杠“//”表示单行注释。注释是给程序员看的,能够帮助程序员快速了解代码的作用。编译时,编译器会把注释忽略掉。除了单行注释,还有多行注释:  /*  */

    2,第三行 #include <iostream>  预处理器编译指令。 编译器主编译之前,预处理器会进行编译预处理。将iostream的文件导入到源文件中,组成一个复合文件,然后才会进行主编译。将iostream的内容添加到源程序,是因为程序后面会用到cout、endl等。后面会将到cout、endl到底是什么。其中 iostream 叫做包含文件——被包含在其他文件中,也叫头文件——被包含在文件的起始位置。C语言中,头文件使用扩展名.h,而C++中兼容C语言的扩展名形式,C++的新风格中没有扩展名,具体可查看相关文件。

    3,第四行 int main() 是函数头,int是函数的返回值的类型,mian是函数名。括号是参数列表,也叫形参列表。此处为空,叫空参数列表。第五行和第十五行是两个花括号,花括号里面的内容是函数体,函数体内是函数具体要执行的操作。第十四行的return 0;表示函数返回值为0.main函数比较特殊,是编译器的入口函数。一个独立的程序是要有main函数的,这样编译器才知道从哪里开始执行。也有没有main函数的程序,比如动态链接库,是做为函数库,也叫工具,给其他程序调用的。这种就不需要main函数了。

    4,第六行 using namespace std; 这叫做using编译指令。std是名称空间,大型程序中会调用到两个不同的已经封装好的产品,可能都提供了A方法,为了让编译器知道具体调用哪个方法,就需要命名空间来区分。比如说命名空间分别为m、n,这样就可以通过m::A()来调用m中的A方法,用n::A()来调用n中的A方法。而std这个命名空间比较特殊,它是C++标准命名空间,C++的标准组件类、函数、变量都放在这个命名空间,比如cout、endl就是放在命名空间std的。使用using编译指令,std内的所有名字都能使用了。当然在大型项目中不建议这样做。可以使用这种 using std:: cout 、using std::endl来使用cout和endl。

    5,第七行 cout << "Come up and C++ me some time."; 最后的分号代表一个语句结束。双引号括起来的一系列字符叫做字符串。<<符号表示将该字符串发送给cout;该符号指出了信息流动的路径。cout是一个预定义的对象,知道如何显示字符串、数字、字符等。<<符号是cout的一个插入运算符,可以将符号右侧的信息插入到cout对应的流中。

    6,第八行 cout << endl; endl是控制符;在输出流中插入endl,将导致屏幕光标移到下一行。诸如这种对cout有特殊含义的特殊符号叫做控制符。也可以使用 换行。比如cout<<"you are beautiful ";其中 被视为一个字符,叫做换行符。但有个区别是,endl会使屏幕刷新输出(输出缓存)。而 不会有这种效果。

     1 // carrots.cpp -- food processing program
     2 // uses and displays a variable
     3 
     4 #include <iostream>
     5 
     6 int main()
     7 {
     8     using namespace std;
     9     
    10     int carrots;            // declare an integer variable
    11     
    12     carrots = 25;            // assign a value to the variable
    13     cout << "I have ";
    14     cout << carrots;        // display the value of the variable
    15     cout << " carrots.";
    16     cout << endl;
    17     carrots = carrots - 1;  // modify the variable
    18     cout << "Crunch, crunch. Now I have " << carrots << " carrots." << endl;
    19     // cin.get();
    20     return 0;
    21 }

    1,这个例子与上面的例子没什么太大差别。讲一下第10行 int carrots; 这个表示一个声明语句。int表示数据类型,告诉编译器要申请一个指定大小的内存空间。int,在C++中表示整数。carrots表示申请的内存空间的一个名字。用来表示存储空间所存储的值。

    carrots是一个变量,即值是可以变化的。

    2,第12行  carrots = 25; 是一个赋值语句,表示将25这个标记赋给carrot所存储的内存空间中。有一个联系赋值的概念,如:a=b=c=3;表示将3赋给c,再将c的值赋给b,再将b的值赋给a。是从右向左进行赋值的。

    3,第17行  carrots = carrots - 1; 表示carrots的值25减去1得到24,然后将24这个结果赋值给变量carrots。

    4,扩展下,如下:cout<<25;与cout<<"25";有什么区别?25是数字,在计算机中是以二进制存储。二进制表示法与计算机内存完全对应。在内存中,每个单元(位)都可以设置成开或关。0表示关,1表示开。内存通常以字节位单位组织,一个字节包含8位。所以,一般int类型是4个字节,就是32位。25有二进制表示是00000000 00000000 00000000 00011001.而对于字符串“25”,其实是字符'2'、'5'、''三个字符组成的,单个字符是一个字节,也就是8位,“25”在计算机中存储的是00000010 00000101 00000000.那为什么显示出来的都是25,是因为cout会根据数据类型,将整数25转换为字符串,然后显示成25.为什么要转换为字符串显示呢?可以理解为,显示给人看的,就需要转换为字符串。

    5,第18行 cout << "Crunch, crunch. Now I have " << carrots << " carrots." << endl; 使用到cout拼接技术。

    类简介:

    1,类是用户定义的一种数据类型。类定义描述的是数据格式及其用法。对象是根据数据格式规范创建的实体。比如:cout是ostream类的一个对象,cin是istream类的一个对象。只不过这两个对象是内置对象,不需要用户手动去创建就可以使用。

  • 相关阅读:
    .Net高并发解决思路 以及乐观锁 悲观锁等
    HTTP和HTTPS TCP/IP的UDP和TCP Socket和WebSocket RabbitMq和队列 Redis和Memcached
    C# Attribute特性 泛型<T> 方法的out ref this(扩展方法) Equals与==
    C# 托管与非托管类型 堆和栈 值类型与引用类型 装箱与拆箱
    C# 递归、冒泡算法 委托与事件 链表 二叉树 平衡二叉树 红黑树 B-Tree B+Tree 索引底层 表达式树
    C# 爬取数据
    C# 常用设计模式 并发编程(异步 多线程) 锁与死锁 集合数组List
    C# NPOI Excel多级表头导出多个表
    windows Server 2016安装Sqlserver远程连接的坑
    hdfs之NameNode故障处理的两种方式
  • 原文地址:https://www.cnblogs.com/zhoubiao20170424/p/6765241.html
Copyright © 2011-2022 走看看