c++
grin : (0~.~0)
这个作者很懒,什么都没留下…
展开
-
运算符重载函数作为类成员函数和友元函数
当作为友元函数时,运算符重载函数为非成员函数,这也意味着this指针无法使用,需要把函数中的参数补全而作为类成员函数时,可以忽略一个参数,this->成员(this的地址为当前对象的地址)假如对“+”运算符进行重载,...原创 2022-06-08 17:47:51 · 117 阅读 · 0 评论 -
静态成员函数调用静态成员的前提
必须要对静态数据成员进行初始化然后才能在静态成员函数使用些数据成员,不然在vs2019community就会出现link200的编译错误原创 2022-05-22 23:26:41 · 84 阅读 · 0 评论 -
对静态数据成员进行初始化
1.如果希望同类的各个对象中的数据成员的值是一样的,就可以把它定义为静态数据成员。2.静态数据成员是在编译时预留空间的,在程序开始运行时被分配空间,到程序结束才释放空间。3.静态数据成员可以初始化,但只能在类体外进行初始化。但要注意的是,不能用构造函数的参数初始化表对静态数据成员进行初始化。如下4.静态数据成员既可以用对象名引用,也可以用类名引用。(这点与静态成员函数非常相像)...原创 2022-05-22 23:23:04 · 5131 阅读 · 0 评论 -
c++成员函数与this指针
class stu {public: //stu(int n, float s) :num(n),score(s){} void change(int n, float s) ; //void display() { cout << num << " " << score << endl; }private: int num; float score;}; void stu::change(int n, float s) { num =.原创 2022-05-22 13:13:11 · 177 阅读 · 0 评论 -
第一次写出链表(不太完整)
#include <iostream>using namespace std;typedef struct sd{ struct sd* next; int num;}stu;stu* creat(int n)//n为结点数{ stu* head; head = new stu; stu* pr; cin >> head->num; pr = head; for (int i = 0;i < n-1;i++) { stu*.原创 2022-05-12 12:25:28 · 57 阅读 · 0 评论 -
很有意思的一个错误
由于调用creat函数时需要输入5个数字,因此当执行print(creat(5))时仍需要输入5个数字#include <iostream>using namespace std;typedef struct sd{ struct sd* next; int num;}stu;stu* creat(int n)//n为结点数{ stu* head; head = new stu; stu* pr; stu* pf; cin >>...原创 2022-05-05 11:25:15 · 55 阅读 · 0 评论 -
我遇到的 多级指针问题
我遇到的问题:我需要头指针来传递给print函数 ,但我不知把头指针定义在主函数,还是自定义函数里,因此我想用多级指针,在print函数里,设置形参sd ** a和intnvoid print(sd** head ,int n)//n为结点{}然后调用这个函数时,print(head,5)我误认为head是一个指向sd类型的变量,因此需要多级指针来接受head这个实参后来意识到:int a;int *p=&a;这时,假如把实参...原创 2022-04-30 23:09:28 · 89 阅读 · 0 评论 -
用int (*b)[ ]表示二维数组
int (*b)[3] ,b为指向包含三个元素的一维数组的指针变量对于一维数组a[] ,定义一个指针 int *b=a;可用*(b+i)来访问一维数组的内容对于int(*b)[3],你可以用(*(b+i))[ j]来访问第i行第j列的元素也可以用 b[i][j]来访问第i行第j列的元素也可以用*b[i]+j来访问第i行第j列的元素多多尝试...原创 2022-04-16 16:15:50 · 588 阅读 · 0 评论 -
char*与char[]
对于char* 前面隐含着 const,它使得s成为一个不可改变的变量因此,用*(s+1)来改变其中的第二个字符是不行的但是,对于字符数组,可以进行这种操作原创 2022-04-03 13:04:39 · 76 阅读 · 0 评论 -
int *p(int,int)和int (*p) (int,int)的区别
int (*p)(int,int)是一个指向函数的指针int *p (int,int) 是一个函数声明,表示返回一个指针这跟优先级有关, ()的优先级高于* ,p先与()结合对于指向函数的指针,用赋值语句 p=函数名即可,函数名是入口地址。int (*p)(int,int);max(int,int);//事先定义的函数p=max;//此时p就和max函数的作用差不多同样的,可以拓展,int *p[ n]和int (*p)[n]的区别[ ]的优先级比*高,所原创 2022-04-02 13:12:48 · 1596 阅读 · 0 评论 -
将一个宏被另一个宏使用
带参数的宏定义的一般形式如下:#define <宏名>(<参数表>) <宏体>一.如下图 我想要计算一个三角形的面积我要定义两个宏:一个用来表示:s=1/2*(a+b+c) 一个用来表示:(s-a)(s-b)*(s-c)刚开始我的代码是这样:编译器告诉我未定义标识符s因此改为下方的代码:a,b,c是s(a,b,c)的参数,也是area(a,b,c)的参数这样就...原创 2022-03-21 13:36:45 · 1318 阅读 · 0 评论 -
C语言结构体中的字符数组的赋值
一,如果对 char course[20] 就会报错。原因分析:因为在字符串数组中,你在声明这个字符串的时候可以进行初始化char[20]="123456";但是不能像下面这样 这段代码char a[20];a[20]="123456";这时候就相当于对一个字符串数组里的一个元素赋值。并且是不合法的,因为a[20]已经超出了数组容量下面这个图片 只对course[1]赋值是可以的解决方案:需要用到strncpy函数百度百科:.原创 2022-03-15 23:50:30 · 4617 阅读 · 1 评论 -
【无标题】
typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,它与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中。(源自百度百科)1.zhengshu 相当于 int#include <stdio.h>typedef int zhengxing; //这时 zhengshu 就相当于 int int main(){ zhengxing a = 1; pri原创 2022-03-14 21:33:51 · 56 阅读 · 0 评论 -
一个数恰好等于它的因子之和
完数定义:完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。截至2018年,相关研究者已经找到51个完全数下面是错误代码#include <iostream>using namespace std;in原创 2022-03-12 11:11:02 · 4492 阅读 · 0 评论