hhlaowang
本帖最后由 hhlaowang 于 2021-11-10 09:09 编辑

不知道在这里分享学习合不合适
直接把这里当做笔记记录(顺便偷偷水个贴):
今天学习了C++的基础语法与引用基础等。

先讲讲面对过程和面对对象吧:
我是这样理解的:
一个人一天:起床,刷牙,吃早餐,上课,吃午餐,上课,吃晚餐,睡觉。
这些行为在面对过程中,这是一个大的过程,各种行为就是小的过程,我们是一步一步执行的。
在面对对象中,一个人就是一个对象, 这些行为相当于对象上的方法。
之前面对过程是通过调用各种函数来完成任务的。
现在面对对象是通过调用对象来完成任务的。
而对象是有属性的,你是个对象,你有属性:身高体重等,还有你能做的事情(方法):刷牙、上课等。
而过程是没有这些的。
C++泛型编程(STL/标准模板库)-> 这个世界上所有的工程师都使用同一台函数接口。

之前学习过C语言,对于C++还是学的还是挺快的,但是老师只讲解了一些简单的东西。
C++基础

  1. #include <iostream>
  2. using namespace std;//命名空间
复制代码
目前还不是很理解这两个(大致意思告诉编译器使用std这个命名空间)
(如果不使用命名空间,那么使用工具,就必须加上作用域符)
后面学到更深入再补充
在C++中是兼容C语言的语法的,对于像是printf的函数还是可以使用的。
但是在C++中一般不使用printf(有更简单的东西为什么不用呢?)
  1. int a = 10;
  2. cout << "a = " << a << endl;//endl为换行
复制代码
  1. int b;
  2. cin >>b;
复制代码

不再需要%d等的格式化描述符,也不需要考虑缓冲区问题。非常方便。

  1. //字符串变量
复制代码
//如果是C语言需要一个字符数组。长度还是固定的,非常不方便

  1. void main(int argc, char **argv)
复制代码
不能这样定义主函数(C++中主函数返回值不能为空)


字符串的判断:
  1. //C语言的字符串判断是使用标准函数strcmp函数来进行对比的。
复制代码
  1. string str1 = "hhlaowang";
  2.     string str2 = "jack";

  3.     if(str1 == str2)
  4.     {
  5.         cout << "它们相等" << endl;
  6.     }
  7.     else
  8.     {
  9.         cout << "它们不相等" << endl;
  10.     }
复制代码

C++申请空间和释放空间
  1. int *num1 = new int(10);  //申请一个int大小的堆空间,默认值是10;
  2.     int *array = new int[10]; //申请10个int类型的堆空间

  3.     *num1 = 99;
  4.     array[5] = 88;
  5.     cout << "num1 = " << *num1 << endl;
  6.     cout << "array[5] = " << array[5] << endl;

  7.     delete num1;
  8.     num1 = NULL;
  9.     delete[] array; //释放数组需要加[]
  10.     array = NULL;
复制代码

引用

引用就相当于给变量取别名(底层实现是个指针常量(指向的地址不能被改变)所以引用在初始化时必须在指定对象)


  1. int a = 10;
  2. int &b = a;//int &别名 = 原名;
  3. b = 99;
  4. cout << "a =" << a << "b =" << b << endl;
复制代码
输出结果都是 99
  1. void swap(int &a,int &b)
  2. {
  3.     int temp;
  4.     temp = a;
  5.     a = b;
  6.     b = temp;
  7. }
  8. 主函数:
复制代码
结果:成功调换变量的值。
结论:当函数参数使用引用传递时,操作形参就等价于操作实参。
  1. int &func1()
  2. {
  3.     static int a = 10;
  4.     cout << "a = " << a << endl;
  5.     return a;
  6. }

  7. int main(int argc, char **argv)
  8. {
  9.     int &temp = func1();
  10.     cout << "temp =" << temp << endl;
  11.     temp = 99;
  12.     func1();
复制代码
结果:
a = 10
temp =10
a = 99
a = 888
结论:函数内静态修饰的局部变量可以作为绑定引用返回到主函数,主函数也可以通过引用来修改函数内的变量值。
这时候函数返回值是个左值,可通过返回值来修改函数内变量值
如func1() = 888;

我的错误
  1. int *a = new int(10);
  2. const int *&b = a;
复制代码
为什么:
const int *&b是个引用,引用的是const int *这个类型,而上面的类型是int *,类型不对,所以报错。


  1. int a[10] = {0};
  2. int *&b = a;
复制代码

为什么:a是数组名,相当于首元素下标的地址,是个右值。不可被非常量引用所引用。
要这样改

  1. int a[10] = {0};
  2. int * const &b = a;//变为了常量引用
复制代码








ZX夏夜之风
给我看的一愣一愣的
c++固然好,但是单一个cout就能给我劝退了。。
java真香。。

Lxi520
我学校也有学,但是我一个都听不懂

hhlaowang
ZX夏夜之风 发表于 2021-11-9 12:58
给我看的一愣一愣的
c++固然好,但是单一个cout就能给我劝退了。。
java真香。。 ...

我要学一个月的C++,把C++简单过一边

残狼dada
针不戳= =

模拟城镇
java默默飘过

苳鈤_生之辉光
我大受震撼

sb_david_xyf
学了Java的面向对象之后 感觉c++的面向对象还是太次了  感觉c++还是更偏向面向过程一些 不过有一说一 Java是真的在语言中算好学的了 c++ c就是折磨人

cold_mc
《 船 新 定 义 水 帖 》

白门
本帖最后由 白门 于 2021-11-9 14:39 编辑

引用不是指针,引用不是指针,引用不是指针!
指针是对象,引用不是对象。
可以有指针的引用,没有指向引用的指针。你可以int *&example但你不能int &*example。
没有引用的引用,但是可以有指向指针的指针。你可以的int **ptr但你不能int &&ref。
可以有指针数组但没有引用数组。

hhlaowang
本帖最后由 hhlaowang 于 2021-11-9 15:03 编辑
白门 发表于 2021-11-9 14:36
引用不是指针,引用不是指针,引用不是指针!
指针是对象,引用不是对象。
可以有指针的引用,没有指向引用 ...

谢谢啊,我百度了一下,它底层实现是个指针常量吧,就类似于这种
int const *p
但不能说他是指针。
对吧
( 帖子已修改)

花里胡烧
表示想学吧,又懒

hhlaowang

别偷懒了,快来学习了

醉倾梦
喔哈哈哈,正在读大学的我正在学C语言,接触过Java的我学这些会觉得稍微容易一点点,当然只是一点点~

sb_david_xyf
白门 发表于 2021-11-9 14:36
引用不是指针,引用不是指针,引用不是指针!
指针是对象,引用不是对象。
可以有指针的引用,没有指向引用 ...

这都可以有大佬纠错的吗 我Java那边也有好多问题 是不是也可以发个学习贴坐等大佬回复了

920578181
牛啊 加油 打卡 坚持!

libiche_Krs4v
C+大佬,nb

Fronti
基础的,不会是黑马程序员吧

longzouh500
加油 坚持住就好

MC的苦力怕
我也学c++,还有你学了多久?

cok473
人生苦短,我用python

柚子滑稽
行ba
突然py香很多了

幻灭丶梦
表示学过,但没完全学过

晚成
加油我也在学

钓鱼杰尼
工厂混的,表示只懂底层的语言,汇编和C。。。。。

稚始稚终
大佬分析的好哇。也发的好

我是猫总
WC,是大佬呀!

hhlaowang
朱顾彧 发表于 2021-11-9 18:38
我也学c++,还有你学了多久?

今天第一天
我参加的培训快班,一个月估计要讲的差不多,主要是他们要求写笔记,所以我就顺便来这里水个贴

德芙Max
大佬太牛逼!!!

hhlaowang
sb_david_xyf 发表于 2021-11-9 17:02
这都可以有大佬纠错的吗 我Java那边也有好多问题 是不是也可以发个学习贴坐等大佬回复了 ...

确实,今天学新的知识又是一堆问题了

时光linjia
java学习者路过,觉得好奇怪

人人人身
不错啊,看来BBS上的人才多多啊

MC的苦力怕
hhlaowang 发表于 2021-11-9 20:35
今天第一天
我参加的培训快班,一个月估计要讲的差不多,主要是他们要求写笔记,所以我就顺便来这里水个贴 ...

一天学我一年的量?感觉我废了

hhlaowang
朱顾彧 发表于 2021-11-9 20:59
一天学我一年的量?感觉我废了

主要是我学习过c语言,过渡到C++很轻松

z_s_y
如果要打印的数据很大的话,一般还是用printf更快

1207139923
哇,大佬。萌新大一刚刚起步一段时间,还在c

a1092544567
c++从入门到入土?

balawanan
我可以期待一下你的地中海了

fdsgsdgs
看着好难,还是python好,.

九天凌飞
11111111111111111111111111111

熙澈2
加油我还在学java基础,都有点的头大了

jason_sun
但是在C++中一般不使用printf(有更简单的东西为什么不用呢?)
对此有异议
在不关闭流同步的情况下,cin、cout的效率大约为printf、scanf的1/4,在数据量大时会大大影响程序效率,导致TLE

[🍓🍅🍎]
看标题以为是那种c语言 结果进来你给我看这个

liziyan20020227
看了半天也没明白

liziyan20020227
sb_david_xyf 发表于 2021-11-9 17:02
这都可以有大佬纠错的吗 我Java那边也有好多问题 是不是也可以发个学习贴坐等大佬回复了 ...

反正就是挺萌的

liziyan20020227

当初学的时候就懵

Jump_Fish
是java不香了吗

槿言萌新
C++大佬,这就是程序员嘛,爱了爱了

请叫我白泽
感谢lz分享ww

`薄情少年
加油加油,我也在学

第一页 上一页 下一页 最后一页