C++
文章平均质量分 59
一剃解千愁
已关闭CSDN消息,有需求请联系:[email protected]
展开
-
几个字符串的处理函数
//对比字符串str1和str2//*str1:字符串1指针//*str2:字符串2指针//返回值:0,相等;1,不相等;u8 usmart_strcmp(u8 *str1,u8 *str2){ while(1) { if(*str1!=*str2)return 1;//不相等 if(*str1=='\0')break;//对比完成了. str1++; str2++; } return 0;//两个字符串相等}//把str1的内容copy到str2//*str1:字原创 2021-01-13 10:39:28 · 470 阅读 · 1 评论 -
C语言小技巧
sprintf指的是字符串格式化命令,函数声明为 int sprintf(char *string, char *format [,argument,…]);,主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。解决这个问题,可以考虑使用 snprintf函数,该函数可对写入字符数做出限制。u8 ADC_Ch[2][4];sprintf(原创 2020-12-24 16:16:26 · 183 阅读 · 1 评论 -
C++,指针数组,数组指针,二维数组指针,字符指针
// Example program#include <iostream>#include <string>using namespace std;const int MAX = 4; int main (){ char *cp="iambang";//cp看作列地址 char *tmp_p[]={"aaa","bbb","nng","eee","hhh"}; char **p=tmp_p;//temp_p看作行地址,p指向的是的行地址原创 2020-11-15 22:56:48 · 202 阅读 · 0 评论 -
c/c++小知识
预处理预处理原创 2020-10-15 11:47:33 · 144 阅读 · 0 评论 -
C++ volatile的理解
对volatile的理解:用volatile 关键字声明的类型变量,表示该变量是随时可能发生变化的,告知编译器每次使用它的时候必须从它的地址中读取,不能“偷懒”(偷懒是优化的表现,当编译器发现两次从 i读数据的代码之间的代码没有对 i 进行过操作,它会自动把上次读的数据放在 b 中,而不是重新从 i 里面读,这样一来,如果 i是一个寄存器变原创 2020-08-10 11:16:49 · 202 阅读 · 0 评论 -
vector对象的使用
#include <iostream>#include <vector>using namespace std;double average(const vector <double>&arr){ double sum = 0; for (unsigned i = 0; i < arr.size(); i++) sum += arr[i]; return sum / arr.size();}int main(){ vector<原创 2020-07-18 22:31:06 · 159 阅读 · 0 评论 -
常指针、常引用作为形参和返回值
#include <iostream>using namespace std;const int N=10;int Sum1(const int *p) { int sum=0; for (int i=0;i<N;i++) { sum += *(p + i); } return sum;}void Sum2(const int*p, int *s)//常量指针,普通指针,无返回{ for (int i = 0; i < N; i++) { *s +=原创 2020-07-18 17:32:11 · 798 阅读 · 0 评论 -
基于范围的for循环和常指针
#include <iostream>using namespace std;void fun1(int *a){ cout << "调用指针形参" << endl; int i; for (i = 0; i < 3; i++) { a[i] += 1; cout << a[i]<< endl; }}void fun2(const int *a)//最小授权原则,够用就好,隐藏细节,保证安全{ cout &l原创 2020-07-17 21:01:36 · 533 阅读 · 0 评论 -
c++重载为类的成员函数
//成员函数返回本对象自己或者自己的拷贝//return *this对应Complex &,则返回对象本身(对象的引用)//return *this对应Complex ,则返回对象的副本//return this对应Complex *,则返回对象当前地址(指向当前对象的指针)//返回新的对象,调用构造函数//return Complex(real + c.real,imag+c.imag);//调用默认构造函数,返回临时无名对象#include <iostream>usin原创 2020-05-11 15:02:52 · 590 阅读 · 0 评论 -
c++重载非成员函数
当操作数不属于同一个类的对象,可在类外定义非成员函数,然后在类中声明为类的友元,这样可方便的访问私有成员#include <iostream>using namespace std;class complex {public: complex(double r, double i) :real(r), imag(i) { cout << "调用默认构造函数" << endl; } void display(void) { cout << "(原创 2020-05-11 12:35:32 · 933 阅读 · 0 评论 -
c++动态内存分配、把转置矩阵函数改造成转置矩阵类
函数版:#include <iostream>using namespace std; void swap(int &a,int &b){ int temp; temp = a; a = b; b = temp;}int main(){ int **p;//指向指针的指针p,被它指向的对象还是一个指针 p = new int*[3];//p指向...原创 2020-04-14 12:18:42 · 1082 阅读 · 1 评论 -
移动构造和复制构造函数都有,会调用哪个?
移动构造和复制构造函数都有,会调用移动构造#include <iostream>using namespace std;class IntNum {public: IntNum(int x=0) :p(new int(x)) { cout << "调用默认参数构造函数"<<endl; } IntNum( const IntNum &...原创 2020-04-13 13:07:31 · 844 阅读 · 1 评论 -
什么时候需要深层复制?
#include <iostream>using namespace std;class Point {public: Point() :x(0), y(0) { cout << "调用无参默认构造函数" << endl; } Point(int x1, int y1) :x(x1), y(y1) { cout << "调用含参构造函数" ...原创 2020-04-13 11:37:08 · 661 阅读 · 1 评论 -
C++动态组类,一个类中含有另一个类的对象,对象指针等
详情看每句的注释!!#include <iostream>using namespace std;class Point {public: Point() :x(0), y(0) { cout << "调用无参默认构造函数" << endl; } Point(int x1, int y1) :x(x1), y(y1) { cout << ...原创 2020-04-12 13:18:07 · 1343 阅读 · 0 评论 -
c++函数指针,动态内存分配,对象指针
对象指针#include <iostream>using namespace std;class Point {public: Point():x(0),y(0){ cout << "调用默认构造函数" << endl; } Point(int x1,int y1) :x(x1), y(y1) { cout << "调用含参构造函数" &...原创 2020-04-11 14:36:07 · 364 阅读 · 0 评论 -
c++动态内存分配之变量,一维数组,二为数组,多维数组
#include <iostream>using namespace std;int main(){ int a[5] = {0,1,2,3,4}; int *p1; p1 =a; cout << "a[3]="<<p1[3]<<endl; /*动态创建_普通变量*/ int *p2; p2 = new int;//好像没什么用...原创 2020-04-11 14:29:35 · 392 阅读 · 0 评论 -
c/c++中,普通变量,一维数组和二维数组的指针变量初始化及使用
对于一维数组,数组名是首元素地址,我称其为:列地址;指针++就是换列,一个一个地访问每列的元素对于二维数组,数组名则是首行数组地址,每行都是一个一维数组,我称其为:行地址,指针++就是换行,类型相同原则,指向它的指针也要是数组指针(行指针)即int (p)[3];p=行地址;不能是变量指针(列指针),int p;(p+i )=p[i]=a[i]&a[2]=&((a+2))...原创 2020-04-10 16:20:04 · 960 阅读 · 0 评论 -
在c++中,字符指针作形参
#include <iostream>using namespace std;class Employee { private: const char *name;//name;address;city;code;就是字符串首字符的地址 const char* address; const char *city; const char *code; publi...原创 2020-04-08 15:21:16 · 657 阅读 · 0 评论 -
在c++中,字符串初始化和输出字符串的几种方法
代码举例:#include<iostream>using namespace std;int main(){ //初始化整型变量,并用指针指向它,然后输出 int a = 5, b = 10; int *p1 = &a; cout << *p1 << endl;//输出5 //初始化字符变量,并用指针指向它,然后输出 char c1 ...原创 2020-04-08 14:34:02 · 1836 阅读 · 0 评论 -
C++初始化对象参数个数不同的对象数组
/*1,构造函数和复制构造函数可以只对部分私有成员初始化2,初始化对象数组,对象初始化对象所需参数个数不同,需要重载构造函数在初始化的时候,形式不一样Sample f[5] = { 1,2,3,4,5 };//Sample h[5] = { (1,2),(3,4),(5,6),(7,8), (9,10)};//不报错,调用的one个参数的构造函数,这不是预期的Sample h[5] =...原创 2020-04-07 18:15:26 · 281 阅读 · 0 评论