C++ 预备知识#关于C++

1.杂

  • 计算机语言要处理概念——数据和算法。数据是程序使用和处理的信息,而算法是程序使用的方法。
  • 过程性编程是试图使问题满足语言的过程性方法,强调的是算法方面,而OOP试图让语言来满足问题的需求,其理念是设计与问题的本质特性相对应的数据格式。
  • 在C++中,类是一种规范,它描述了新型的数据格式,对象是根据这种规范构造的特定数据结构。
  • 可移植相关:硬件和语言上的差异。

2.一个示例程序

//displays a mesage
#include<iostream>
int main()
{
    using namespace std;
    cout<<"Come up and C++ me some time.";
    cout<<endl;
    cout<<"You won‘t regret it!"<<endl;
    return 0;
}

3.进入C++

(1)int main(void) 描述的是main()和操作系统之间的接口。关键字void指出函数不接受任何参数,在C++中让括号空着与使用void完全等效,在C中,让括号空着意味着对是否接收参数表示沉默。

(2)iostream中的io指的是输入(cin)和输出(cout).

(3)关于using namespace std;//命名空间。类、函数和变量是C++编译器的标准组件,他们都被放在名称空间std中。

(4)cout将一个字符串插入到输出流中。endl;//表示重起一行。

(5)C++风格:

  • 每行一条语句。
  • 每个函数都有一个开始花括号和一个结束花括号,这两个花括号各占一行。
  • 函数中的语句都相对于花括号进行缩进。
  • 与函数名称相关的圆括号周围没有空白。

4.C++语句

C++语句
//提供两种语句,声明语句创建变量、赋值语句给变量赋值
//重新认识cout的智能
#include<iostream>
int main()
{
    using namespace std;

    int carrots;
    carrots=25;

    cout<<"I have";
    cout<<carrots;//打印carrots的当前值25.
    cout<<"carrots.";
    cout<<endl;
    carrots=carrots-1;
    cout<<"Crunch,crunch,Now I have "<<carrots<<" corrots."<<endl;
    return 0;
}

C++语句

(1)在C++中,所有变量都必须声明,定义声明导致编译器为变量分配内存空间,相应的还有引用声明。
(2)cout和cin的智能化,请注意cout<<"n";和cout<<n;的区别。cin使用>>操作符从收入流中抽取字符。cout<<"n"<<"b";(cout可以使用<<进行拼接).

(3)类描述了一种数据类型的全部属性,对象是根据这些描述创建的实体。

//引入cin
#include<iostream>
int main()
{
    using namespace std;
    int carrots;
    cout<<"How many carrots do you have ?";
    cin>>carrots;       //c++input
    cout<<"Here are two more.";
    carrots=carrots+2;
    cout<<"Now you have"<<carrots<<"carrots."<<endl;//使用<<作为连接连续输出
    return 0;
}

5.函数简介

使用sqrt()函数
//使用sqrt()函数
#include<iostream>
#include<cmath>//提供sqrt()函数原型
int main()
{
    using namespace std;
    double area;
    cout<<"Enter the floor area,in square feet,of your home:";
    cin>>area;
    double side;//允许在任何地方声明新变量
    side=sqrt(area);
    cout<<"That‘s the equivalent of a square 39.1918"
        <<"feet to side."<<endl;
    cout<<"How fascinating!"<<endl;
    cout<<side<<endl;//输出结果39.1918
    //cout<<side<<endl;??
    return 0;
}

使用sqrt()函数

(1)有返回值的函数(使用return关键字来提供返回值)和没有返回值的函数。不返回值的函数,不能将该函数的调用放在赋值语句或其他表达式中。

(2)对于有返回值的函数,可以认为函数执行完毕后,语句中的函数调用部分将被替换为返回值。

(3)对于C++库中的每个函数,都在一个或多个头文件中提供了其原型。原型只描述函数接口,库文件中包含了函数的编译代码,而头文件则包含函数原型。

(4)C+=允许在程序的任何地方声明新的变量。

(5)C++不允许将函数定义嵌套在另一个函数定义中。每个函数都是独立的,所有函数的创建都是平等的。

(6)main()函数的返回值并不是返回给程序的其它部分,而是被返回给操作系统。

(7)函数原型描述了函数接口(函数如何与程序的其它部分交互),参数列表指出了何种信息将被传递给参数,函数类型指出了返回值的类型。

调用函数
//调用函数
#include<iostream>
void simon(int);//声明函数

int main()
{
    using namespace std;
    simon(3);//调用函数
    cout<<"Pick an integer:";
    int count;
    cin>>count;
    simon(count);
    cout<<"Done!"<<endl;
    return 0;
}

void simon(int n)//函数定义部分
{
    using namespace std;
    cout<<"Simon says touch your toes "<< n <<" times."<<endl;
}//函数不需要返回语句

调用函数

(8)一般地,只让需要访问名称空间的函数访问它是更好的选择。

//用户定义的有返回值的函数
#include<iostream>
int stonetolb(int);//函数声明

int main()
{
    using namespace std;
    int stone;
    cout<<"Enter the weight in stone:";
    cin>>stone;
    int pounds=stonetolb(stone);//把stone作为函数的参数
    cout<<stone<<" stone =";
    cout<<pounds<<" pounds."<<endl;
    return 0;
}

int stonetolb(int n)
{
    return 14*n;//函数的返回值
}

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

时间: 2024-08-15 00:59:17

C++ 预备知识#关于C++的相关文章

[转]预备知识—程序的内存分配

因为经典,所以转发. 一.预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 栈区(stack)  —   由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 堆区(heap)   —   一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回    收.注意它与数据结构中的堆是两回事,分配方式倒是类似于链表. 全局区(静态区)(static) —,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,

word2vec 中的数学原理详解(二)预备知识

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感.一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟,出于好奇,我也成为了他们中的一员.读完代码后,觉得收获颇多,整理成文,给有需要的朋友参考. 相关链接 (一)目录和前言 (二)预备知

《软件调试的艺术》笔记--预备知识

1.gcc的-g选项 如果要使用gdb进行调试,必须在编译时在gcc中加入-g选项,使用参数 -g 表示将源代码信息编译到可执行文件中. 如果不使用-g选项: #include <stdio.h> int main(void) { int i = 1; i = i + 1; printf("i = %d\n",i); return 0; } gcc main.c gdb a.out (gdb) b main Breakpoint 1 at 0x4004f8 (gdb) r

最大熵学习笔记(一)预备知识

  生活中我们经常听到人们说"不要把鸡蛋放到一个篮子里",这样可以降低风险.深究一下,这是为什么呢?其实,这里边包含了所谓的最大熵原理(The Maximum Entropy Principle).本文为一则读书笔记,将对最大熵原理以及由此导出的最大熵模型进行介绍,重点给出其中所涉及数学公式的理解和详细推导. 相关链接 最大熵学习笔记(零)目录和引言 最大熵学习笔记(一)预备知识 最大熵学习笔记(二)最大熵原理 最大熵学习笔记(三)最大熵模型 最大熵学习笔记(四)模型求解 最大熵学习笔

【转】关于LIS和一类可以用树状数组优化的DP 预备知识

原文链接 http://www.cnblogs.com/liu-runda/p/6193690.html 预备知识 DP(Dynamic Programming):一种以无后效性的状态转移为基础的算法,我们可以将其不严谨地先理解为递推.例如斐波那契数列的递推求法可以不严谨地认为是DP.当然DP的状态也可以是二维/三维的,某一维的含义也不仅仅是指某个数列的第几项. 树状数组(BIT or fenwick tree):一种高效地动态维护一个序列并动态求取前缀和的数据结构.修改某个元素/求一次前缀和的

C++ primer plus读书笔记——第1章 预备知识

第1章 预备知识 1. Ritchie希望有一种语言能将低级语言的效率.硬件访问能力和高级语言的通用性.可移植性融合在一起,于是他在旧语言的基础上开发了C语言. 2. 在C++获得一定程度的成功后,Stroustrup才添加了模版,这使得进行泛型编程成为可能. 3. Linux中要支持C++11,编译源文件时要使用-std = c++0x选项: g++ -std = c++0x use_auto.cpp 4. 程序执行完毕后,有些IDE自动关闭窗口,而有些IDE不关闭.为查看输出,可以在程序的最

android金阳光自动化测试——学习历程:自动化预备知识上&amp;&amp;下

章节:自动化基础篇——自动化预备知识上&&下 网易云课堂: 上:http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=877113&courseId=712011 下:http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=877114&courseId=71

Qt DLL总结【一】-链接库预备知识

1.链接库概念 静态链接库和动态链接库介绍 我们可以创建一种文件里面包含了很多函数和变量的目标代码,链接的时候只要把这个文件指示给链接程序就自动地从文件中查找符合要求的函数和变量进行链接,整个查找过程根本不需要我们操心. 这个文件叫做 "库(Libary)",平时我们把编译好的目标代码存储到"库"里面,要用的时候链接程序帮我们从库里面找出来. 静态链接库: 在早期库的组织形式相对简单,里面的目标代码只能够进行静态链接,所以我们称为"静态库",静态

2. 自然语言处理预备知识

自然语言处理的预备知识 熟练掌握Python 微积分,线性代数 (MATH 51, CME 100) 基本的概率论和统计(CS109) 机器学习基础(CS229) 自然语言处理参考书 Dan Jurafsky and James H. Martin. Speech and Language Processing (3rd ed. draft) [link] Yoav Goldberg. A Primer on Neural Network Models for Natural Language

驱动开发读书笔记. 0.06 嵌入式linux视频开发之预备知识

驱动开发读书笔记. 0.06  嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB video class 或USB video device class.是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一. UVC linux driver: UVC linux 驱动 需要在编译内核的时候选上 配置内核 Device