![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
不想上课的hh
这个作者很懒,什么都没留下…
展开
-
C指针和字符数组
对于数组c1也可以采用这两种取值方式 c1[i] 或者是进行解引用 *(c1+i);对指针c2可以使用像数组一样的取值方式c2[i] 或者是进行解引用 *(c2+i);由于c2是字符类型的指针;所以c2++等于c2的基址加上一个字节的大小;对于数组c1 以下操作是非法的 c1=c2 或者是 c1=c1+1;//实际上c2保存的是数组c1的基址 &c1[0];使用char C[5]={};的方式必须显式的添加'\0'对于指针c2 是可以进行c2++的操作。//c2这个指针变量占四个字节的内存空间。原创 2024-03-18 13:59:16 · 344 阅读 · 0 评论 -
C函数数组传参,退化为指针
SumOfElements(A,size)也可以写成 SumOfElements(&A0],size)int SumOfElements(int A[])的写法等价于(int *A);数组作为函数参数,进行传参,在调用函数中的修改会改变数组的值。函数数组传参时并不会把整个数组拷贝过去,仅会拷贝函数的基址。如果想要不改变数组的值可以加上const限定符。A[i]也可以写成*(A+i)原创 2024-03-18 12:34:51 · 328 阅读 · 0 评论 -
C 数组的指针
【代码】C 数组的指针。原创 2024-03-17 19:37:08 · 308 阅读 · 0 评论 -
C函数指针
原创 2024-03-16 16:25:55 · 321 阅读 · 0 评论 -
数组指针操作
arr 是一个包含5个元素的整型数组,arr[0] = 1, arr[1] = 2, arr[2] = 3, arr[3] = 4, arr[4] = 5。5. *(*(&arr+1)-1):解引用该地址,得到倒数第二个元素arr[4]的值,即得到结果为5。4. *(&arr+1)-1:将指针减去1,指向数组arr中的倒数第二个元素arr[4]的地址。3. *(&arr+1):解引用该地址,得到的是下一个数组元素的地址,即arr[5]的地址。所以,表达式 *(*(&arr+1)-1) 的结果为5。原创 2024-03-07 19:34:29 · 363 阅读 · 0 评论 -
C++ 迭代器
当向vector容器插入(push_back)一个元素后,capacity返回值与没有插入元素之前相比有改变,此时first和end操作返回的迭代器都会失效。当vector进行删除操作(erase,pop_back)后,指向删除点的迭代器全部失效;指向删除点后面的元素的迭代器也将全部失效。对于节点式容器(map, list, set)元素的删除,插入操作会导致指向该元素的迭代器失效,其他元素迭代器不受影响。在deque容器的任何其他位置的插入和删除操作将使指向该容器元素的所有迭代器失效。原创 2024-03-07 19:15:55 · 321 阅读 · 0 评论 -
C++ typedef
在使用typedef改变原类型的名称后,新的类型名和原类型名都可以使用。在程序中,允许用typedef来说明一种新的类型名。使用typedef 说明新类型名时,后面要加分号。格式:typedef 原类型名 新类型名;原创 2024-03-07 19:12:02 · 316 阅读 · 0 评论 -
【无标题】
这里对成员函数的解析,和查找其对应的代码的工作都是在编译阶段完成而非运行时完成的,这就是所谓的静态绑定,也叫早绑定。(注意,这里的找到是程序运行的时候才找的,这也是所谓动态绑定的含义:运行时才绑定这个函数名与其对应的实际代码。为了保证程序的运行时效率,C++的设计者认为凡是编译时能确定的事情,就不要拖到运行时再查找了。因为对于非虚成员函数,C++这门语言是静态绑定的。这语句的意图是:调用对象 pA 的 test 成员函数。1:查找 pA 的类型,发现它有一个非虚的成员函数叫 test。原创 2024-03-06 20:32:30 · 428 阅读 · 0 评论 -
一个 const 对象()
如果我能正确的将 ttt 的地址传给 this ,那么 ttt 这个常量的值不是可以在 this 中被改变了吗,所以,编译器是不允许这种情况出现的,就提示错误了。同理,当我们的成员函数是 const 成员函数时,例: CTest::ttt() const, 在编译器解释时会将该函数解释为 CTest::ttt(const CTest * const this),this 指针及其所指向的内容都不可以被修改,前面提到的矛盾也就不存在了,所以 const 对象可以访问 const 成员变量。原创 2024-03-06 20:23:51 · 373 阅读 · 0 评论 -
C++构造函数
C构造函数是面向对象编程所需要的,它主要有两个作用: (1)创建对象。使用“new 构造函数名()”来创建对象。(2)对象属性设置初值。构造函数创建对象后,可以对对象属性设置初值, 无参构造函数设置的是null或者0;有参构造设置的是相应的初值。D在构造函数中,你可以在同一个类中使用this关键字调用另一个构造函数。A每个类可以有多个构造函数。B构造函数名与类名完全相同。原创 2024-03-06 20:14:35 · 342 阅读 · 0 评论 -
C++指向函数的指针定义方式为
返回类型 (*指针名) (函数参数列表) ,例如 void (*p)(int)是指向一个返回值为void 参数为int类型的函数。定义方式:返回类型 (类名::*指针名)(函数参数列表)例如void (A::*p)(int)是一个指向A类中成员函数的函数指针。调用方式:成员函数指针的调用必须通过类对象进行调用,a.*p(int)即可调用成员函数(该成员函数是public类型的)对于静态成员函数的定义和使用方法都与普通函数指针的相同,只是在赋值的时候和非静态成员们函数指针的赋值方法相同。原创 2024-03-06 20:05:11 · 355 阅读 · 0 评论 -
C++运算符重载
当运算符重载为类的成员函数时,函数的参数个数比原来的操作数要少一个(后置单目运算符除外),这是因为成员函数用this指针隐式地访问了类的一个对象,它充当了运算符函数最左边的操作数。(1) 双目运算符重载为类的成员函数时,函数只显式说明一个参数,该形参是运算符的右操作数。重载前缀:a.operator++();重载后缀:a.operator++(1)(2) 前置单目运算符重载为类的成员函数时,不需要显式说明参数,即函数没有形参。(3) 后置单目运算符重载为类的成员函数时,函数要带有一个整型形参。原创 2024-03-06 19:04:58 · 315 阅读 · 0 评论 -
C++函数 重载的作用
2.函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数, 这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了 函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。3.类的构造函数跟类名相同,也就是说:构造函数都同名。如果没有函数重载机制, 要想实例化不同的对象,那是相当的麻烦!1.多个函数共用一个名字,减少对用户的复杂性。原创 2024-03-06 18:58:22 · 353 阅读 · 0 评论 -
不能声明为虚函数的函数
因为构造函数本来是为了初始化对象成员才产生的,然而虚函数的目的是为了在完全不了解细节的情况下也能正确处理对象,两者根本不能“ 好好相处 ”。因为虚函数要对不同类型的对象产生不同的动作,如果将构造函数定义成虚函数,那么对象都没有产生,怎么完成想要的动作?:当我们把一个函数声明为一个类的友元函数时,它只是一个可以访问类内成员的普通函数,并不是这个类的成员函数,自然也不能在自己的类内将它声明为虚函数。如果一个类的友元函数是另一个类成员函数,那么它在自己的类内可以被声明为虚函数。注意:友元本身可以是虚函数!原创 2024-03-06 15:37:04 · 301 阅读 · 0 评论 -
【无标题】
则编译时会产生错误的语句有 AB。E语句5 //继承 隐藏了。A语句1 //二义性。B语句2 //二义性。原创 2024-03-06 15:29:15 · 330 阅读 · 0 评论 -
C++运算符重载
1.重载不能改变运算符运算对象(即操作数)的个数;如,关系运算符“>”和“<”等是双目运算符,重载后仍为双目运算符,需要两个参数。运算符”+“,”-“,”*“,”&“等既可以作为单目运算符,也可以作为双目运算符,可以分别将它们重载为单目运算符或双目运算符。3.重载不能改变运算符的结合性。如,复制运算符”=“是右结合性(自右至左),重载后仍为右结合性;5.重载运算符的运算中至少有一个操作数是自定义类;6.对运算符的重载,不应该失去其原有的意义;4.重载运算符的函数不能有默认的参数;原创 2024-03-06 15:21:21 · 328 阅读 · 0 评论 -
C++ 指针类型
原创 2024-03-06 15:17:07 · 285 阅读 · 0 评论 -
C++ 牛客网
在c++中,连续比较运算符要注意运算符的结合性。11 < a <= 14实际上被解释为(11 < a) <= 14.即先比较11和a的大小关系,然后将结果(0或1)作为布尔值与14进行比较,那么肯定最后的比较结果肯定都是满足的但是并不是我们想要的表达式符合 11 < a < 15,也就是说无论a是多少最后一个表达式都成立。设a是整型变量,不能表达数学关系式11<a<15的C++表达式是( D )原创 2024-03-06 15:03:39 · 357 阅读 · 0 评论 -
C/C++ 的进制
十六进制:0xXXXX。二进制:0dXXXX。%x是以16进制输出。原创 2024-03-04 19:03:28 · 336 阅读 · 0 评论 -
C++ 类
【代码】C++ 类。原创 2024-03-04 18:58:57 · 284 阅读 · 0 评论 -
C++抽象类
(3)可以定义指向抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性。(2)抽象类不能用作参数类型、函数返回类型或显式转换的类型。(1)抽象类只能用作其他类的基类,不能建立抽象类对象。原创 2024-03-04 18:45:34 · 412 阅读 · 0 评论 -
C++ fopen
fopen存在下面几种模式:原创 2024-03-04 18:33:09 · 380 阅读 · 0 评论