C++入门笔记(1)

一、基本数据类型

Bool

||或

&&且

!非

字面值

二、变量(对象)

变量提供一个具名的、可供程序操作的存储空间。变量由其数据类型决定所占空间的大小和布局方式、该空间能存储的值的范围、变量能参与的运算

初始化

声明和定义

为了支持分离式编译,C++语言将声明和定义区分开来。声明(declaration)使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。而定义(definition)负责创建与名字关联的实体

(声明一个变量时不能初始化)

extern int i; //声明i

作用域

基本的引用和指针

可以引用指针(指针是一个对象),也可以定义指向一个指针的指针,但指针不能指向引用

命令的使用

sizeof()             获取占用字节大小    需注意:不同数据类型使用的字节大小不同,编译时就执行

可以通过sizeof(array)/sizeof(array数据类型)来获得数组长度

需注意 构建的字符串填充char数组占用个数为字节个数+1   换行符

strlen() 是一个函数,需要引入头文件<string>, 在运行时执行,获取输入长度的大小遇到NULL中止

char a[10]="you";

int b=sizeof(a);    //b=10

int c=strlen(a);    //c=3

name.length() 帮助获取到string中的有效字符个数
strlen(name)帮助检索char字符数组中的有效字符个数

sizeof(name)
char name[]={'o', 'k', '\0'}; 创建字符串
char name[]={'o', 'k'}; 创建字符数组
char name[]="ok";创建c语言字符串填充数组

cin只读到空格前的数 空格后的数会留到读取下一次输入
cin.getline(name,20);只能接受字符数组,读取完整的行内容

用strlen()前要#include <string>

用power()前要#include <math>


string也有空格断输入的问题
getline(cin,name); 成员函数
string不用关心长度

一维数组
int data[]{0,1};
二维数组
int data[][3]={ {0,1,2},{5,6,7}};
读写数组
data[0][3]=2
数组名称里越贴近名称的维度越高

遍历只针对容器

数组如需在循环里输出指定位,需要在编译时就指定数组大小,不能靠运行时输入确定大小


if(){
}
else if(){
}
else{
}

for(A, B, C)
{D}

For在第一次循环时执行A,判断条件B是否成立,B成立执行D, D完毕后执行C
 

Break跳出当前操作逻辑循环并终止循环,如果是嵌套循环,只跳出一层
Continue跳出当前操作逻辑循环并进入下次循环,continue只会跳出一层 只能在循环里用
Return函数中才能用,当前程序逻辑无需继续执行,直接移交执行权给函数

%取余

Do while

do
{循环体
}while(条件)

语法糖
简化了循环的操作流程,可以遍历数组和数组结构的数据体
应用性越强,结构复杂度越高,降低了执行效率

int DATA[]=一个数组
For(auto 名字:DATA)
{
cout<<名字<<endl;
}

三目运算符(三元运算符)
只针对两个值进行筛选
只能拿来筛选值
可用if替代,但不能替代if语句
条件?结果1:结果2
int C=A>B?A:B;
如果条件为真,返回结果1,假返回结果2

位运算
二进制在程序中编码中很难展示 框架级设计常见,产品开发中不常见
位运算主要是针对数据以二进制的方式进行运算
高效,节省内存
进行位运算时,如果要做推断校验,需先把数据转换为二进制,再进行运算
& 按位与 a&b 相同位的两个数字都为1,有一为0则为0
| 按位或 a|b 相同位数据,有一为1则为1
^ 按位异或 a^b 相同位数据,不同为1,相同为0
~ 按位取反 ~a 为1变0,为0变1
<< 左移 a<<b 将数据位向左移动,新进位用0填补,左移相当于乘以2的移动数的次方
>> 右移 a>>b 正数,将数据位向左移动,缺失位用0填补; 负数,将数据位向右移动,缺失位用1填补  正数右移相当于除以2的移动数的次方

按位运算符的优先级
1.~
2.<<,>>
3.&
4.^
5.|
6.&=,^=,|=,<<=,>>=


应用
1.快速乘除2 左移右移


2.加密解密一个数字 按位异或


3.交换AB两个变量值

A=A^B; B=A^B; A=A^B   (B=A+B-B)


4.获取二进制最后一位

按位与 A&0x1


5.快速判断奇偶数(二进制最后一位为0为偶数) 取余2速度很慢


6.位运算中的取末尾3或4位 

末尾三位A&7,四位A&0xf


7.获取二进制N位上的数
B=A>>(N-1)&0x1


8.把二进制的第N位变为0或1
看连招释放 超时置为0,一个int 32个布尔值 可以控制多个开关
B=1<<(N-1)|A改为1
B=~(1<<(N-1))&A改为0(1二进制为0001)
 

构建枚举

enum EColor

{Blue,

Red,

White,

};

使用

EColor TColor=Ecolor::Blue;

Switch给定的变量与常量进行比较,也可以switch枚举

所以switch可以转成IF,但不是所有IF都能转成switch

switch比较的是值

Switch(Ecolor)

{case Blue:

break;

case Red:

break;

case White:

brake;

default:

break;

}

函数

用来处理一系列逻辑运算和操作的整体

void 无类型,常在程序中定义返回函数类型,参数类型,指针类型等

结构体

扩展数据类型,用来更加清晰地描述事物的特性

struct结构体名称{

成员属性

};

结构体的初始化

在创建结构体对象的时候,如果给他默认赋值,

就不能使用花括号赋值     

struct a

{

int Id;

};

a lizi{1}

a lizi.Id=1

结构体的大小

数据对齐,结构体中计算数据大小时,将向最大数据类型看齐,无法对齐就构建一个最大的数据类型内存单元,成员属性排列按从大到小就行

共用体

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值