- 博客(50)
- 收藏
- 关注
原创 文章标题
1. this指针,在成员函数的开始前构造,在成员函数结束后清除 例如:class A{ int fun(int p);//等价于 int fun(A * const this, int p); }2. C语言中struct没有构造函数 c++中struct有构造函数,只是成员变量的默认属性为private,C++中struct的唯一意义是让C语言有个归属感。3. Test b
2017-09-14 11:43:08 180
原创 位运算
位运算实现求平均值:(x^y)>>1//求不同位的一半 (x&y)//求相同值位的一半 (x&y)+(x^y)>>1 位运算实现求两个值得和int add(int x, int y){ if (y == 0) return x; int yy = (x&y) << 1;//带进位的加法 int xx = (x^y);//不带进位加法 return
2017-08-20 11:17:19 177
原创 字符串数组
char str[5] = "hello"; printf("%s",str);//代码直到遇到‘\0’,停止打印,故可能出现垃圾值 char str2[10] = "hello";//编译器给的str2的默认值为0,故打印出hello后停止打印 char str3[] = "hello";//编译器自动加零, printf("%d",sizeof(str3));//6
2017-08-20 10:48:13 196
原创 c语句
if (4 > 10) printf("11111\n"); else if (4 > 2) printf("22222\n"); else if(num = 3)//赋值操作//短路操作 printf("33333\n"); else printf("44444\n");
2017-06-25 11:09:49 209
原创 数据输入和输出操作 IO操作
printf(%[-][0][4][.2][f],3.124);-:右对齐 4:占四个字节 0:空位用0填充 .n:表示截取的字符个数 f:输出浮点数 printf("%4d%4d\n", 1, 23);//右对齐,长度为4 printf("%-4d%-4d\n", 1, 23);//左对齐,长度为4 printf("%04d%04d\n", 1, 23);//右对齐,长度
2017-06-23 22:25:49 447
原创 20170622 c++
存储形式内存的最小单位是字节; sizeof(): 单目运算符,用来计算操作数在内存中占据的字节数,其操作数既可以是括在圆括号中的类型标示符,其返回值为无符号整数 原码 反码 补码0 0000 0000 0000 0000 0000 0000 -0 1000 0000 1111
2017-06-22 11:28:48 183
原创 奇偶排序
#include <iostream>#include <vector>using namespace std;void reOrderEvenOdd(vector<int> &array, int begin, int end){ if (!array.size()) return; if ((end - begin) <= 0) return
2017-04-27 13:46:25 280
原创 快速排序
#include <iostream>using namespace std;int Partition(int *data, int length, int start, int end);int Partition2(int *data, int length, int start, int end);void quickSort(int *data, int length, int st
2017-04-26 13:48:25 134
原创 二分查找
#include<iostream>using namespace std;//非递归int binarySearch(int *a, int len, int goal) { int low = 0; int high = len - 1; while (low<=high){ int middle = low + (high - low) / 2;
2017-04-25 22:16:33 190
原创 静态成员可以是不完全类型
class Student{ static Student s; //Student ss;//错误,不允许使用不完整类型 Student *sss;//不完整类型可以是指针或引用 Student &ssss;};
2017-04-20 20:07:30 567
转载 必须使用初始化列表的情况
常量成员,因为常量成员只能初始化不能赋值,所以必须放在初始化列表里面引用类型,引用必须在定义的时候初始化,并且不能重新赋值,所以也要写在初始化列表里面没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数初始化。例:class Student{const int a;Student(){a = 1;//错误,实际上是赋值,即在已经定义了a的
2017-04-20 15:57:59 295
原创 预处理器 preprocessor
预处理器是在编译之前执行的一段程序,主要包括一下三种形式: (1)宏定义 #define (2)文件包含 #include:当预处理器看到#include标记时,就会用指定的头文件的内容代替#include,在编译时,就对已经替换的文件进行编译 (3)条件编译 #define 指令把一个名字设定为预处理变量,#ifdef 当且仅当变量已定义时为真, #ifndef当且仅当变量未定义时为真。
2017-04-20 14:16:51 817
原创 两个类的相互引用
例如: A.h class A{ B b; }B.h class B{ A a; }此时若分别互相包含A.h和B.h,则会出错,修改方案为: 一个使用#include “A.h” 另一个使用 类的声明: class B;例://B.h#include "A.h"class B{A a;//对A的操作};//A.hclass B;//类声明class A{B b;/
2017-04-19 14:01:16 1217
原创 类数据成员的初始化
在“内联函数”小节中,我们介绍了Screen类,其中成员变量有 窗口宽:width 窗口高:height 鼠标位置:cursor 窗口内容:contents以及成员函数: 默认构造函数 Screen() 带参构造 获取固定位置值 get() 设置固定位置值 set() 移动鼠标位置 mov() 显示窗口内容 display()接下来,我们将定义一个窗口管理类并用它小时显示器上的一
2017-04-19 11:05:01 345
原创 友元
友元可以是函数,也可以是类 友元函数声明在类定义的内部,位置不限,不受所在区域访问权限的限制 友元可以访问类的私有成员 例如:class Person{ friend istream &read(istream &is, Person &p);private: string name; string address;public: Person(string
2017-04-18 20:43:57 163
原创 c++中struct和class的区别
默认访问权限不一样类成员的默认权限依赖于类定义的方式 默认为private struct 默认为public
2017-04-18 20:34:45 145
原创 拷贝、赋值和析构
对象的拷贝: 初始化变量 以值的方式传递或者返回一个对象赋值:Person p1("li",12);Person p2;p2 = p1;//赋值//**实际操作为:**p2.name = p1.name;p2.age = p2.age;析构:一个局部对象在创建它的块结束时被销毁合成的拷贝赋值和析构函数局限性: 如果类包含vector或者string成员,则其拷贝、赋值和销毁的合成版可
2017-04-18 20:27:00 304
原创 构造函数
合成的默认构造函数:编译器创建的构造函数 合成的默认构造函数的局限性:编译器只有在发现类中不包含构造函数时,才会生成默认的构造函数默认数组和指针,即未定义行为有的时候编译器不能为某些类合成默认的构造函数。例如,如果类中包含一个其他类型的成员,且该成员的类型没有默认构造函数,此时,编译器无法初始化该成员。一、内置类型 如int, char, float, unsigned等。内置类型是最
2017-04-18 19:20:25 148
原创 自定义对象的写入和读出函数
istream &read(istream &is, Person &p){//写入 is >> p.name>>p.address; return is;}ostream &print(ostream &os, const Person &p){//读取 os << p.getName() << "+" << p.getAddress(); os << endl
2017-04-18 16:44:28 206
原创 常量成员函数
C++语言允许把const关键字放在成员函数的列表之后,此时,紧跟在参数列表后面的const表示 this 是一个指向常量的指针。像这样使用const的成员函数被称作常成员函数
2017-04-18 15:41:29 160
原创 含有可变形参的函数
有时我们无法提前预知应该向函数传递几个参数。 如果所有的实参类型相同: initializer_list ini;//是一种模板类型,类似于vector 如果实参类型不同:???void fun7(initializer_list<string> ss){ for (auto s = ss.begin(); s != ss.end(); ++s){ cout << *
2017-04-14 15:20:48 324
原创 一点点 一点点 一点点
在c++中建议使用引用代替指针使用应用避免拷贝在函数无需修改引用形参的值时,最好声明为常量引用如果形参是引用类型,则将其绑定到实参上,否则执行拷贝并赋值自增优先级高于解引用,点运算优先级高于解引用拷贝构造和赋值运算 -初次定义为拷贝构造。。。已经定义的变量为赋值
2017-04-14 10:51:38 222
原创 局部对象
形参和函数体内部定义的变量统称为局部变量 自动对象:达到定义所在的块末尾时,被销毁的对象 为自动对象 局部静态对象:在程序的执行路径第一次经过对象定义语句时初始化,并且知道程序种植才被销毁,在此期间即使对象所在的函数结束执行也不会对它有影响
2017-04-14 10:39:33 220
原创 异常处理机制
异常处理机制包括 异常检测 和 异常处理 异常检测部分:throw expression 异常处理部分:try{try block}catch try抛出异常 catch处理异常
2017-04-14 09:55:01 224
原创 do...while
实例:不断提示用户输入一对数,然后求其和string rsp; do{ cout << "please enter two numbers:" << endl; int val1,val2; cin >> val1 >> val2; cout << "the sum of " << val1 << "and " << val2
2017-04-14 09:20:28 111
原创 默认初始化
全局变量会初始化,局部变量不会默认初始化例:int i;//默认初始化为0;类对象会通过默认构造方法进行默认初始化string s;//nullvector<int> vec(10);//0 0 0 0 0 0 0 0 0 0 编译器可以跳过定义,跳不过初始化int b = 3; switch (b){ case 0: //string s;//错误,s默认隐式初
2017-04-14 08:50:40 212
原创 运算优先级问题
int i = f1() * f2();//f1()和f2()肯定会在乘号之前执行,可是我们并不知道先执行的是哪个cout<<i<<i++;//此时,并不知道先执行i++和是i 即称该表达式的行为是不可预知的只有四种运算符明确规定了运算对象的求值顺序 && || ?: 和 , (先左后右)求值顺序、优先级、结合律int i = f() + f1() * f2();//优先级规定:f1()和
2017-04-13 15:29:38 304
原创 c标准下的字符串
c++支持c风格的字符串,可是最好不要使用c风格字符串:试讲字符串存放到数组中,并以空字符结束#include<string.h>char chs[] = "string";//默认以空字符结束,strlen(chs);//遇到空字符结束,否则结果错误strcmp(ch1 , ch2);//比较两个字符串的大小//必须要由调用者计算ch1的大小strcat(ch1 ,ch2);//将ch2附
2017-04-13 10:00:43 284
原创 数组
!!attention!!char chs[] = {'c' , 'j','k'};//长度为3char chs2[] = {'c' , 'j','k' , '\0'};//手动加空字符char chs3[] = "cjk";//默认加空字符,长度为4;//char chs4[4] = "dddd";//错误,长度不够char chs4[4] = "ddd";//错误,长度不够复杂的数组声明
2017-04-12 21:45:16 126
原创 迭代器iterator
用于访问容器和string中的元素:间接访问it = s.begin();//it是个指针,指向s的第一个元素it = s.end();//it指向s最后一个元素的下一个位置for(auto it = s.begin(); it != s.end() ; ++it){//检查是否为空*it = 'v';}vector::iterator it;//it 能读写vector的元素 strin
2017-04-12 17:27:31 147
原创 vector
vector是类模板: 类模板:通过提供一些额外信息来指定模板到底实例化成什么样的类vector<int> ivec;//保存int 类型的对象vector 能容纳大多数类型的对象作为其元素,但是因为引用不是对象,所以不存在包含引用的vector。早期以vector作为元素的表示方式为:vector<vector<int>>定义和初始化 vector<int> v1;//默认初始化,v1
2017-04-12 17:05:23 207
原创 文章标题
cctype.hisalnum(c);//当c为字母或数字时为真isalpha(c);//当c为字母时为真iscntrl(c);//当c为控制字符时为真isdigit(c);//当c为数字时为真isgraph(c);//当c不是空格但可打印时为真islower(c);//当c是小写字母时为真isprint(c);//当c是可打印字符时为真ispunct(c);//当c是标点符号时为真
2017-04-12 11:41:34 130
原创 string
字符串:初始化 string s; string s1 = "lixiaojie"; string s2(s1); string s3 = s1;//等价于s3(s1) string s4(5, 'c'); string &s5 = s1; cout << "length="<<s1.length()<<" size="<<s1.size()
2017-04-12 11:24:42 262
原创 RNTI 身份识别
RA-RNTI、Temp C-RNTI和C-RNTI: - RA-RNTI:随机接入过程中,UE用于解物理广播信道信息的RNTI,只用于MSG2 - Temp C-RNTI:随机接入过程中的一个临时的C-RNTI。有了Temp C-RNTI、还需要有RA-RNTI的原因是,在解msg2的时候还没有Temp C-RNTI,因此需要有一个协议规定好的RNTI用于解msg2,这个就是RA-RN
2017-04-12 10:16:16 2489
原创 const 限定符 extern 对常量的引用 指向常量的指针 常量指针
main.cppextern const int x = 10;//必须加externint main(){return 0;}fun.cppextern const int x;void fun(){cout<<x<<endl;//可以使用x;}2. 对于非const变量而言 main.cppint x = 10;//必须是全局变量int main(){return 0;}
2017-04-10 20:25:56 393
原创 引用
引用(reference):对象的另一个名字,指向的是同一个内存单元,必须初始化 int x = 10; int &y = x;//x和y的地址一样 int z= 12; y = z;//x = 12 =y = z;可是x和y的地址不变引用即别名,定义了一个引用之后,对其进行的所有操作都是在与之绑定的对象**上进行的。int *p = &x;//定义指针变量p int &xx = *p;/
2017-04-10 16:14:09 231
原创 列表初始化
初始化 != 赋值 初始化:创建变量时,为变量赋予初始值 赋值:将对象当前值擦除,并用一个新值来代替列表初始化:无论是初始化对象还是某些时候为对象赋新值,都可以使用一组由花括号括起来的初始值 int x = 0; int x = {0}; int x{0}; int x(0);
2017-04-10 14:50:01 165
原创 符号转型
unsigned a = 1; int b = -1; a * b = 2^(32)-1; //由有符号数转换为带符号的整数-1的的补码形式为:1111 1111 1111 1111 1111 1111 1111 1111 原码:1000 0000 0000 0000 0000 0000 0000 0001
2017-04-10 11:40:21 160
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人