没有合适的资源?快使用搜索试试~ 我知道了~
本人学习笔记,从基础逐步深入,其中还包括内存、指针、等内容,很适合c++程序员使用
资源详情
资源评论
资源推荐
→→→→→→→→→→☆☆☆☆→→→→→→→→→→→→→→☆C++ 笔记☆→→→→→→→←←←←←☆☆☆☆←←←←←←←←←
C 语言基础
第一章: C/C++语言概论与结构
1.1:预处理语句:
#include <stdio.h> < >系统头文件
#include “… …”
“ ”自定义头文件:预处理时先到当前目录查找,在到系统头文件中找
注:在 c++中头文件(包含文件)可不加.h,可在名字前加 c 标识是 C++头文件
例:<include cmath>
1.2:计算机 3 种编码:
1:原码 二进制
2:反码 二制码 0,1 互换
3:补码 计算机存储数据都是以补码形式存储的
正数补码:此正数的原码
负数补码:负数绝对值的反码+1
1.3:C++输出格式
#include <iostream> //标准输入输出
using namespace std; //导入 std 命名空间
std::cout << “xuchong” << std::endl; 未导入 std 命名空间
cout << “xuchong” << endl;
iostream 类的对象及作用:
cout: 将数据显示在标准输出设备上.
cerr:它无缓冲地向标准错误输出设备输出数据.
clog:类似 cerr,但是它使用缓冲输出.
cin: 用于从标准输入设备读取数据
char *str = NULL;
cout << “请输入一个字符串:”;
cin >> str;
→→→→→→→→→→→→→→→→→→→→→→→→→☆C++ 笔记☆→→→→→→→←←←←←←←←←←←←←第 1 页 共 55 页
→→→→→→→→→→☆☆☆☆→→→→→→→→→→→→→→☆C++ 笔记☆→→→→→→→←←←←←☆☆☆☆←←←←←←←←←
第二章: 数据类型、运算符、表达式
2.1 数据类型
数据类型
取值范围 长
度
输出
基本数据
字符类型
char -128~127 1
布尔默认 1/0 输出
true/false 样式输
出需转格式:
cout<<boolalpha
八进制输出:
cout<<oct
十进制输出:
cout<<dec
十六进制输出:
cout<<hex
unsigned char 0~255 1
整型
short -32768~32767 2
int 2*10
-32
~2*10
32
4
long 2*10
-31
~2*10
31
-1 4
实型
float 3.4*10
-38
~2*10
32
4
double 8
布尔型
bool true/false 1
枚举
emun emun s{a=1,b}; 4
引用类型
指针
int *a; 4
引用
int &a;
数组
int a[5];
计算字节数运算符:
sizeof(4)= 4;
sizeof(int) = 4;
复合类型
结构
struct a{int a,int b};
联合
union X{a=1, b, c};
类
class Stu{};
字符串类型
string string s=”xu”;
空值
void
基本类型的最大最小值:
#include <limits>
cout << numeric_limits<int>::max() int 型最大值
cout << numeric_limits<int>::min() int 型最小值
2.2 引用
引用可以用作对象的另一个名字,通过引用我们可以间接地操纵对象使用方式类似于指针,在实际
的程序中引用主要被用作函数的形式参数——通常将类对象传递给一个函数,将不会产生对象的副本,
直接使用对象的引用。
引用声明时必须初始化,一旦引用定义,就不能再指向其他对象
const引用可以用不同类型的对象初始化,只要能类型转换,也可是不可寻址的值。
引用在内部存放的是一个对象的地址,是该对象的别名。
int a = 5;
int &r_a = a;
→→→→→→→→→→→→→→→→→→→→→→→→→☆C++ 笔记☆→→→→→→→←←←←←←←←←←←←←第 2 页 共 55 页
→→→→→→→→→→☆☆☆☆→→→→→→→→→→→→→→☆C++ 笔记☆→→→→→→→←←←←←☆☆☆☆←←←←←←←←←
int *&p_a = &a;//指向 int 指针的引用
int& max(int &a, int *&p){} //返回值与参数为引用类型的函数
2.3: 类型转换
强制类型转换:
static_cast<int>(变量)
int a = (int)3.14 //C 类型强转
int b = int(3.14) //C++支持的类型强转
2.4:位运算符
&:按位与 都为 1 才为 1
|:按位与 有一为 1 即为真
^:按位异或 都 1 为 0,有 0 为 1
~:按位取反 数值反码-1 ~2=-3
>>:按位右移 257/8 == 257>>3 456%32 == 456-(456>>4<<4)
<<:按位左移 5<<2 = 5*2
2
int a = 1000;
a |= 0x1<<3; //改变第三位值为1
a &= ~(0x1<<3);//改变第三位值为0
2.5:逗号运算符
int I = (1,2,3); 由左到右执行
i = 3;
2.6:数组类型
一数组:
int a[4] = {1,2,3}; 未赋值部分默认为 0
int a[]= {1,2,3}; 有多少数值即为数组长度,越界为随机数
二维数组:
int a[][2] = {1,2,3,4}; 行下标可省略,数值个数/列下标即行下标
int a[2][3] = {{1,2},{3,4}}; 无完整赋值,默认值 0
字符数组
1:逐个赋值
char a[10] = {‘h’,’e’,’l’,’l’,’o’ };
2:字符串赋值
char a[10] = “…”; 此方法节省空间,但会多出一个一长度‘\0’;
Scanf(“%s”,a)
说明:%s 表示数组里所有值,a 表示数组首地址,等同于 a[0],&a
Scanf(“c”,&a[0])
说明:%c 表示数组 a 中某一个的值,需要&来标示为数组中某个值的地址
→→→→→→→→→→→→→→→→→→→→→→→→→☆C++ 笔记☆→→→→→→→←←←←←←←←←←←←←第 3 页 共 55 页
→→→→→→→→→→☆☆☆☆→→→→→→→→→→→→→→☆C++ 笔记☆→→→→→→→←←←←←☆☆☆☆←←←←←←←←←
第三章: 关键字
1. extern
extern:修饰的函数或全局变量可以当前使用,仅仅是一个声明,并未定义、分配
内存空间。在所有模块中作为一种全局变量只能被定义一次。
常使用形式:
在 C++中引用 C 文件
C 头文件中变量与函数声明:extern int a();
C++调用 C 文件:extern “C”{#include “C 头文件”}//先导头文件,在调用
在 C 文件中引用 C++文件
C++变量、函数声明:extern “C” int a();
C 文件调用:extern int a();//先声明,在调用
2. static
在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访
问,但不能被模块外其它函数访问。它是一个本地的全局变量。被限制在声明它
的模块的本地范围内使用。
对于类的static成员变属于整个类所有,对类的所有对象只有一份拷贝。
在类中的static成员函数属于整个类所有,此函数不接收this指针只能访问类
的static成员变量。
3. const
const 代表不可变的、只读的。不可变只相对于程序而言,
const int a 常量整型
const int *a 指向常整型的指针,整型数不可修改,但指针可以
int* const a 指向整型的常指针,指针指向的整型数可修改,指针不能
const int* const a 指向常整型的常量指针
作用:
防止一个变量被改变,const 变量需在声明时初始化。
4. volatile
volatile 修饰的变量表示变量可有会被意想不到的改变,这样优化器在用到
这个变量时必须重新读取该变量值,而不是使用保存在寄存器里的备份。
并行设备的硬件寄存器
中断服务子程序中会访问到的非自动变量
多线程中被几个任务共享的变量
→→→→→→→→→→→→→→→→→→→→→→→→→☆C++ 笔记☆→→→→→→→←←←←←←←←←←←←←第 4 页 共 55 页
→→→→→→→→→→☆☆☆☆→→→→→→→→→→→→→→☆C++ 笔记☆→→→→→→→←←←←←☆☆☆☆←←←←←←←←←
5. typedef
typedef 用于为数据类型取别名,它与#define 宏定义不同,typedef 会进行
类型检查。宏定义只是简单的字符替换。
#define CH char*
Typedef char* PCH;
CH a,b == char *a, b; //b 为 char 型变量
PCH a,b == char *a, char*b;
6. register
寄存器变量存放在 CPU 的寄存器中,使用时不需要访问内存,直接从寄存器中
读写,提高执行效率。对于变量频繁读写时,反复访问内存时可使用。
只有局部自动变量和形参才可定义为寄存器变量。属于动态存储方式。
register 是一个建议型关键字,指程序建议放在寄存器中,但最终由系统
决定是否为寄存器变量。与 inline 同理。
int main()
{
register int i = 0;
register int s = 0;
for(i; i<=100; i++)
{
s += i;
}
return 0;
}
→→→→→→→→→→→→→→→→→→→→→→→→→☆C++ 笔记☆→→→→→→→←←←←←←←←←←←←←第 5 页 共 55 页
剩余54页未读,继续阅读
limanman7080
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0