C++笔记(一)【基础知识】

C++笔记(一)【基础知识】

一、整体规范

1.1 C++对C的扩充

  • 变量的定义可以出现在任何行
  • 提供了标准输入输出流对象cin,cout
  • 用const定义常变量
  • 函数重载,函数模板,带默认值的函数
  • 引用类型
  • 单目作用域运算符
  • string类型字符串
  • 使用new和delete代替malloc和free函数等

​ c++是面向对象的,c是面向过程的。

​ c++11是最流行的版本

1.2 开发工具

  • 记事本(notepad+=)+命令行
  • Visual C++ 6.0(经典,但与流行OS不兼容)
  • VS 2015或VS2017(功能强大,但体积大,而且是微软的C系列)
  • Code::Blocks(目前如日中天的开源c++开发工具)
  • DEV C++(很经典,但05年开始停止更新)

1.3 关于头文件

​ 头文件的命名约定如下:

头文件类型约定示例说明
c旧风格以.h结尾stdio.hc,c++通用
c++旧风格以.h结尾iostream.hc++可以使用
c++新风格没有扩展名iostreamc++使用,需要用namespace
转换后的c加上前缀c并且没有扩展名cmathc++使用

​ #开头的语句为预处理器指令

​ #include<iostream>输入流流到管道中,这里的管道为cout(c out),管道连向内存。进程间通信也是借助管道进行通信

命名空间(namespace)

using namespace std (standard,使用命名空间为std,使用标准命名空间)这句没有的话,cout前要加std::,但若有重名的,就需要要显式的用。相当于python中的import as

​ 其他用法:

using std::cout;
using std::cin;
using std::endl;

include中<>和""的区别

​ #include <windows.h>
​ <>表示,从编辑器默认的路径中去找文件stdio.h.这个默认的路径,取决于编译器.不同平台下不同编译器的路径都不相同.这个默认的路径下,已经包含了c标准库所需的所有头文件.
使用c++标准库的头文件使用该方法.

​ #include “mytest.h”
​ ""表示从当前目录下寻找文件mytest.h。如果当前目录下找不到,再从编辑器默认的路径中查找。使用用户自定义的头文件使用该方法。

头文件函数
<stdio.h>或者<cstdio>printf
<iostream>cout,cin,endl

​ 备注:endl有清空缓存区的功能

printf("我的名字是:%s",tlj)

1.4 编译执行过程

预处理->编译->目标文件->链接

  1. 预处理:把#include语句的相关库,代码包含进来(.ii)
  2. 编译:转为汇编文件(.s)
  3. 目标文件(汇编):可执行的二进制文件(.o)
  4. 链接:与c++函数库连接形成.exe文件

二、数据类型

2.1 常用数据类型

数据类型符号位数范围
整型int32-2147483648~+2147483647
短整型(谨慎使用)short int16-32768~+32767
长整型(与int范围一样的)long int32-2147483648~+2147483647
单精度浮点型(谨慎使用)float32-3.4E-38+3.4E+38(只有67为有效数字,精度很低)
双精度浮点型double641.7E-308~1.7E308(十五位有效数字)
字符型char8隶属于整型(bool类型也是隶属于整型),机器中还是按照整型存放
其他long long int(c++11标准中增加的);long double
//定义别名
typedef char wode_char;
wode_char name='a';

//自带的提前定义好的
size_t t;
//相当于
unsigned int t;

//宏定义的固定常量,系统自带的,全大写
INT_MAX;
//相当于
#define INT_MAX 2147483647;
//若系统没有则在头文件加个 #include <climits>

//保留小数后两位
cout << fixed << setprecision(2);

//测量数据类型的长度
cout << sizeof(double) << endl;

//字符串加的时候会以ascii码大小运算
cout << 'A'+' ' << endl;
//A为65 空格为 32 因此为97
cout << (char)('A'+' ') << endl;
//a

//
cin >> num;//scanf("%d",&num);
chi1=cin.get();//获取一个字符

//字符串数组
//c++风格
string names="tlj";
//c风格
char names[]="tlj";
char* name="";


​ 其他数据类型:

​ size_t类型,枚举类型,自定义类型,指针类型,空类型等。

2.2 常量问题

//c风格
define N 5;   //这种方式叫宏定义,但是不好,因为只有在下面语句中遇到N的时候才替换,这意味着没替换前的N要占内存空间开销

//c++风格
const int N=20;//这里定义的就是真正的常量,遇到的N就是常量,不需要ti'huan
for (int i=0;i<N;i++)
{
    cout << i << endl;
}

三、运算符与表达式

/* 取模运算 */
int num1=-5,num2=2;
cout << num1%num2 << endl;  //符号取决于num1
//取模运算场景
//取某个数的个位数
//一个月余多少天

num1= num2++ - --num2;
//num1=0 num2=2
//num2先减一,因为在同一行,前面的num2也会变为1之后1-1=0 num2再加一,即整个表达式运算完后才算

int num1=0;
int num2=2;
num1= num2++ - num2--;
// num1=-1 num2=2   这里不太明白为什么

3.1 关于i++与++i

i++是先赋值,然后再自增;++i是先自增,后赋值。
用代码表示就是:
若 a = i++; 则等价于 a=i;i=i+1;
而 b = ++i; 则等价于 i=i+1;b=i;

i++ 与 ++i 的主要区别有两个:

1、 i++ 返回原来的值,++i 返回加1后的值。

2、 i++ 不能作为左值,而++i 可以。

3.2 类型转换

​ 原则:小范围的转换到大范围的

int num1=5,num2=2;
double num3=num1/num2;
// 2 因为表达式从右到左,先是两个整型相除得到2之后把2转成double类型的2

3.3 运算符优先级

  1. 单目运算符一般最高(! ~ +±- sizeof)这里的!和~是二进制的运算
  2. 算术运算符>关系运算符>逻辑运算符

3.4 switch 结构

switch(表达式)
{
    case 常量1:
        语句;
        break;
    case 常量2:
        语句;
        break;
    default:
        语句;
        
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值