c++ day2预处理器,名称空间,cin,cout


每个语言都是一上来首先讲讲历史,发展,然后讲一下最基本的输入输出,就开始讲他的内置类型,因为至于学会了他的内置类型,才能进行后面的进一步学习,比如各种控制语句,然后再学习复杂一点的内置复合类型,学学函数,深入学学输入输出,,然后学学库函数啥的,就没了。所以语言是工具,其实语言本身的东西并不多,重要的是用这个语言去创造很多新的东西。

#include<iostream> // 预处理器编译指令,用cin,cout就必须加入这个文件,因为iostream文件里有很多关于输入输出的定义
int main() // 函数头
{ // 函数体开始
using namespace std; // using编译指令,使用std名称空间的定义,使得iostream中的定义对程序可见,不必使用std::前缀
cout << "Come up and C++ me some time.";
cout << endl; // 换行,输出一个空行
cout << "You won't regret it!" << endl;
return 0; // 终止main函数
}// 函数体结束
Come up and C++ me some time.
You won't regret it!

函数分为函数头和函数体,函数头描述了函数和调用它的函数的接口

main()函数被启动代码(由编译器添加到程序中,是OS和APP的bridge)调用,所以int main()这个函数头描述了main函数和OS的接口

一个c++程序必须有一个main函数,否则编译器报错

Windows的动态链接库: DLL,是其他Windows程序可以使用的代码,他并不是独立的程序,不需要main函数

预处理器

c++ 和c 一样,都有个预处理器,他们的指令以# (pound)开头,在编译之前,预处理器会进行文本替换,比如#include,则预处理器会把iostream的文件内容添加到代码的这个位置来,然后和自己编写的源代码一起进入编译器。

c的头文件都是后缀.h的, c++的头文件没有扩展名

名称空间

这里说的简单,还不太懂,后面补充

总之如果头文件名不用后缀.h,那就必须用名称空间编译指令,去使得iostream中的定义对于程序可用;如果不用这个编译指令,那么cout 则必须写为std::cout, endl必须写为std::endl. 使用std名称空间的定义,使得定义可见,不必使用std::前缀

在这里插入图片描述

cout, cin

c++把输出看做是流出程序的字符流,cout用<< 把字符插入到输出流中;输入看作是流入程序的字符流,cin用>>从输入流抽取一个字符。

<< 和>>指示信息的流动方向

<< ,插入运算符,指出了信息流动路径,表示把字符串发送给cout,cout是一个预定义的对象。实际上<<也是按位左移运算符,这就是一个运算符重载的例子,一个运算符有不同的含义,编译器会通过代码上下文确定运算符的含义。C++ 允许让用户自己定义的类去重新定义一些运算符的含义

C里面的运算符重载:&是取址运算符,也是按位与; *是乘法,也是接触对指针的引用

c++的两种发送消息的方式

  • 函数调用,使用类的方法
  • 重新定义运算符,比如cin, cout. 还不是很明白

endl

在这里插入图片描述

c用’\n’换行,’\n’被视为一个字符,叫做换行符

编码整洁

在这里插入图片描述

声明语句

在这里插入图片描述
声明语句(defining declaration):让编译器给变量分配内存,说明信息存储位置和所需内存大小。int a; 就说明了需要分配多少内存,这段内存叫什么名字。编译器负责分配。C++所有变量必须声明,这样虽然麻烦一点,但是不会因为书写变量名称错误而创建一个新变量还不自知。

C一般在函数开始处放置所有的声明,但是c++ 通常把声明放在变量首次使用的地方,不限制必须放在一起,可以放在任何地方,有利有弊,放在一起便于看清楚函数用了多少变量,但是不放在一起的话查找起来比较方便

#include<iostream>
int main()
{
    using namespace std;
    int carrots = 30;
    cout << "I have ";
    cout << carrots;
    cout << " carrots." << endl; // 拼接多条输出语句
    carrots = carrots - 1;
    cout << "Crunch, crunch. ";
    cout << "I have ";
    cout << carrots;
    cout << " carrots now." << endl;
    cout << endl;
    cout << "\n";
    cout << "good morning! \n";
    int a, b, c;
    a = b = c = 1; // c++ 可以连续赋值

    int pens;
    cout << "How many pens do you have? \n";
    cin >> pens; // 信息从cin流向pens
    cout << "Here are two more. \n";
    // 拼接时放在多行,易读,推荐
    cout << "Now you have " 
         << pens + 2
         << " pens. \n";
    return 0;
}
I have 30 carrots.
Crunch, crunch. I have 29 carrots now.


good morning!
How many pens do you have?
22
Here are two more.
Now you have 24 pens.

函数原型

函数原型就像函数声明,它之于函数就像是变量声明之于变量,就是为了说明涉及的类型,描述了接口信息。 c++ 程序必须为每一个函数提供原型,且放在main函数前面。

比如sqrt函数的原型,说明了返回值和参数的类型。注意函数原型必须分号结尾不然会被编译器当成函数头。

double sqrt(double);

像这种库函数的原型可以不用自己写到源代码,而是直接把对应的头文件包含进来,头文件里有原型。(注意函数的定义是在库文件里,而原型是在头文件里,分开的哈,c 和c++都是如此)
在这里插入图片描述

#include <cmath>
#include<iostream>
// 这两个都可以
//#include<cmath>
#include<math.h>
int main()
{
    using namespace std;
    double area;
    cout << "enter the floor area of your house in square feet. \n";
    cin >> area;
    double side;
    //double side = sqrt(area); // 初始化
    cout << "That is the equivalent of a square " << sqrt(area) << " feet to the size. \n";
    return 0;
}
enter the floor area of your house in square feet.
49.2
That is the equivalent of a square 7.01427 feet to the size.

其他原型示例

double pow(double, double);
int rand(void); // 关键字void显式说明不需要任何参数
int rand(); // 隐式说明不需要任何参数
void bucks(double); // 没有返回值,有的地方会把没有返回值的函数叫做过程,c++不care区分这些,大家都叫函数就完了

函数示例,子函数里面也需要写名称空间using编译指令,才能都访问std名称空间的cout. 如果程序所有函数都要访问名称空间std,那就把using指令写在main前面,和原型放在一起,但是一旦有一个函数不需要访问名称空间,我们就尽量不要直接写在外面让所有函数都访问,而是谁访问就在谁的函数体里面写。
在这里插入图片描述
main前面必须有simon的函数原型否则报错

除了main函数之外的函数的定义代码要放在main函数后面,但是所有的函数都是平等的

函数定义是绝对不可以嵌套的

#include<iostream>
//#include<cmath>
#include<math.h>
void simon(int);

int main()
{
    using namespace std;
    simon(4);
    return 0;
}

void simon(int n)
{
    using namespace std;
    cout << "Simon says touch your toes " << n << " times! \n";
}
Simon says touch your toes 4 times!

在这里插入图片描述在这里插入图片描述

#include<iostream>
double convert(double);
int main()
{
    using namespace std;
    double stone;
    cout << "enter the weight in stone. \n";
    cin >> stone;
    double pounds;
    pounds = convert(stone);
    cout << "The weight is "
         << pounds
         << " in pounds. \n";
    return 0;
}

double convert(double stone)
{
    using namespace std;
    return 14 * stone;
}
enter the weight in stone.
5.2
The weight is 72.8 in pounds.

在这里插入图片描述

命名约定

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值