本帖最后由 hhlaowang 于 2021-11-10 09:09 编辑
不知道在这里分享学习合不合适
直接把这里当做笔记记录(顺便偷偷水个贴):
今天学习了C++的基础语法与引用基础等。
先讲讲面对过程和面对对象吧:
我是这样理解的:
一个人一天:起床,刷牙,吃早餐,上课,吃午餐,上课,吃晚餐,睡觉。
这些行为在面对过程中,这是一个大的过程,各种行为就是小的过程,我们是一步一步执行的。
在面对对象中,一个人就是一个对象, 这些行为相当于对象上的方法。
之前面对过程是通过调用各种函数来完成任务的。
现在面对对象是通过调用对象来完成任务的。
而对象是有属性的,你是个对象,你有属性:身高体重等,还有你能做的事情(方法):刷牙、上课等。
而过程是没有这些的。
C++泛型编程(STL/标准模板库)-> 这个世界上所有的工程师都使用同一台函数接口。
之前学习过C语言,对于C++还是学的还是挺快的,但是老师只讲解了一些简单的东西。
复制代码目前还不是很理解这两个(大致意思告诉编译器使用std这个命名空间)
(如果不使用命名空间,那么使用工具,就必须加上作用域符)
后面学到更深入再补充
在C++中是兼容C语言的语法的,对于像是printf的函数还是可以使用的。
但是在C++中一般不使用printf(有更简单的东西为什么不用呢?)
复制代码复制代码
不再需要%d等的格式化描述符,也不需要考虑缓冲区问题。非常方便。
复制代码//如果是C语言需要一个字符数组。长度还是固定的,非常不方便
复制代码不能这样定义主函数(C++中主函数返回值不能为空)
字符串的判断:
复制代码复制代码
C++申请空间和释放空间
复制代码
复制代码输出结果都是 99 复制代码结果:成功调换变量的值。复制代码结果:
a = 10
temp =10
a = 99
a = 888
结论:函数内静态修饰的局部变量可以作为绑定引用返回到主函数,主函数也可以通过引用来修改函数内的变量值。
这时候函数返回值是个左值,可通过返回值来修改函数内变量值
如func1() = 888;

我的错误
复制代码为什么:
const int *&b是个引用,引用的是const int *这个类型,而上面的类型是int *,类型不对,所以报错。

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

不知道在这里分享学习合不合适

直接把这里当做笔记记录(顺便偷偷水个贴):
今天学习了C++的基础语法与引用基础等。
先讲讲面对过程和面对对象吧:
我是这样理解的:
一个人一天:起床,刷牙,吃早餐,上课,吃午餐,上课,吃晚餐,睡觉。
这些行为在面对过程中,这是一个大的过程,各种行为就是小的过程,我们是一步一步执行的。
在面对对象中,一个人就是一个对象, 这些行为相当于对象上的方法。
之前面对过程是通过调用各种函数来完成任务的。
现在面对对象是通过调用对象来完成任务的。
而对象是有属性的,你是个对象,你有属性:身高体重等,还有你能做的事情(方法):刷牙、上课等。
而过程是没有这些的。
C++泛型编程(STL/标准模板库)-> 这个世界上所有的工程师都使用同一台函数接口。
之前学习过C语言,对于C++还是学的还是挺快的,但是老师只讲解了一些简单的东西。
C++基础
- #include <iostream>
- using namespace std;//命名空间
(如果不使用命名空间,那么使用工具,就必须加上作用域符)
后面学到更深入再补充
在C++中是兼容C语言的语法的,对于像是printf的函数还是可以使用的。
但是在C++中一般不使用printf(有更简单的东西为什么不用呢?)
- int a = 10;
- cout << "a = " << a << endl;//endl为换行
- int b;
- cin >>b;
不再需要%d等的格式化描述符,也不需要考虑缓冲区问题。非常方便。
- //字符串变量
- void main(int argc, char **argv)
字符串的判断:
- //C语言的字符串判断是使用标准函数strcmp函数来进行对比的。
- string str1 = "hhlaowang";
- string str2 = "jack";
- if(str1 == str2)
- {
- cout << "它们相等" << endl;
- }
- else
- {
- cout << "它们不相等" << endl;
- }
C++申请空间和释放空间
- int *num1 = new int(10); //申请一个int大小的堆空间,默认值是10;
- int *array = new int[10]; //申请10个int类型的堆空间
- *num1 = 99;
- array[5] = 88;
- cout << "num1 = " << *num1 << endl;
- cout << "array[5] = " << array[5] << endl;
- delete num1;
- num1 = NULL;
- delete[] array; //释放数组需要加[]
- array = NULL;
引用
引用就相当于给变量取别名(底层实现是个指针常量(指向的地址不能被改变)所以引用在初始化时必须在指定对象)
- int a = 10;
- int &b = a;//int &别名 = 原名;
- b = 99;
- cout << "a =" << a << "b =" << b << endl;
- void swap(int &a,int &b)
- {
- int temp;
- temp = a;
- a = b;
- b = temp;
- }
- 主函数:
结论:当函数参数使用引用传递时,操作形参就等价于操作实参。
- int &func1()
- {
- static int a = 10;
- cout << "a = " << a << endl;
- return a;
- }
- int main(int argc, char **argv)
- {
- int &temp = func1();
- cout << "temp =" << temp << endl;
- temp = 99;
- func1();
a = 10
temp =10
a = 99
a = 888
结论:函数内静态修饰的局部变量可以作为绑定引用返回到主函数,主函数也可以通过引用来修改函数内的变量值。
这时候函数返回值是个左值,可通过返回值来修改函数内变量值
如func1() = 888;

我的错误
- int *a = new int(10);
- const int *&b = a;
const int *&b是个引用,引用的是const int *这个类型,而上面的类型是int *,类型不对,所以报错。

- int a[10] = {0};
- int *&b = a;
为什么:a是数组名,相当于首元素下标的地址,是个右值。不可被非常量引用所引用。
要这样改
- int a[10] = {0};
- int * const &b = a;//变为了常量引用

给我看的一愣一愣的
c++固然好,但是单一个cout就能给我劝退了。。
java真香。。
c++固然好,但是单一个cout就能给我劝退了。。
java真香。。
我学校也有学,但是我一个都听不懂
ZX夏夜之风 发表于 2021-11-9 12:58
给我看的一愣一愣的
c++固然好,但是单一个cout就能给我劝退了。。
java真香。。 ...
我要学一个月的C++,把C++简单过一边
针不戳= =
java默默飘过
我大受震撼

学了Java的面向对象之后 感觉c++的面向对象还是太次了 感觉c++还是更偏向面向过程一些 不过有一说一 Java是真的在语言中算好学的了 c++ c就是折磨人
《 船 新 定 义 水 帖 》
本帖最后由 白门 于 2021-11-9 14:39 编辑
引用不是指针,引用不是指针,引用不是指针!
指针是对象,引用不是对象。
可以有指针的引用,没有指向引用的指针。你可以int *&example但你不能int &*example。
没有引用的引用,但是可以有指向指针的指针。你可以的int **ptr但你不能int &&ref。
可以有指针数组但没有引用数组。
引用不是指针,引用不是指针,引用不是指针!
指针是对象,引用不是对象。
可以有指针的引用,没有指向引用的指针。你可以int *&example但你不能int &*example。
没有引用的引用,但是可以有指向指针的指针。你可以的int **ptr但你不能int &&ref。
可以有指针数组但没有引用数组。
本帖最后由 hhlaowang 于 2021-11-9 15:03 编辑
谢谢啊,我百度了一下,它底层实现是个指针常量吧,就类似于这种
int const *p
但不能说他是指针。
对吧
( 帖子已修改)
白门 发表于 2021-11-9 14:36
引用不是指针,引用不是指针,引用不是指针!
指针是对象,引用不是对象。
可以有指针的引用,没有指向引用 ...
谢谢啊,我百度了一下,它底层实现是个指针常量吧,就类似于这种
int const *p
但不能说他是指针。
对吧
( 帖子已修改)
表示想学吧,又懒
花里胡烧 发表于 2021-11-9 15:09
表示想学吧,又懒
别偷懒了,快来学习了
喔哈哈哈,正在读大学的我正在学C语言,接触过Java的我学这些会觉得稍微容易一点点,当然只是一点点~
白门 发表于 2021-11-9 14:36
引用不是指针,引用不是指针,引用不是指针!
指针是对象,引用不是对象。
可以有指针的引用,没有指向引用 ...
这都可以有大佬纠错的吗 我Java那边也有好多问题 是不是也可以发个学习贴坐等大佬回复了

牛啊 加油 打卡 坚持!
C+大佬,nb
基础的,不会是黑马程序员吧
加油 坚持住就好
我也学c++,还有你学了多久?
人生苦短,我用python
行ba
突然py香很多了
突然py香很多了
表示学过,但没完全学过
加油我也在学
工厂混的,表示只懂底层的语言,汇编和C。。。。。
大佬分析的好哇。也发的好
WC,是大佬呀!
大佬太牛逼!!!
sb_david_xyf 发表于 2021-11-9 17:02
这都可以有大佬纠错的吗 我Java那边也有好多问题 是不是也可以发个学习贴坐等大佬回复了 ...
确实,今天学新的知识又是一堆问题了
java学习者路过,觉得好奇怪
不错啊,看来BBS上的人才多多啊
hhlaowang 发表于 2021-11-9 20:35
今天第一天
我参加的培训快班,一个月估计要讲的差不多,主要是他们要求写笔记,所以我就顺便来这里水个贴 ...
一天学我一年的量?感觉我废了
如果要打印的数据很大的话,一般还是用printf更快
哇,大佬。萌新大一刚刚起步一段时间,还在c
c++从入门到入土?
我可以期待一下你的地中海了
看着好难,还是python好,.
11111111111111111111111111111
加油我还在学java基础,都有点的头大了
但是在C++中一般不使用printf(有更简单的东西为什么不用呢?)
在不关闭流同步的情况下,cin、cout的效率大约为printf、scanf的1/4,在数据量大时会大大影响程序效率,导致TLE
看标题以为是那种c语言 结果进来你给我看这个
看了半天也没明白
sb_david_xyf 发表于 2021-11-9 17:02
这都可以有大佬纠错的吗 我Java那边也有好多问题 是不是也可以发个学习贴坐等大佬回复了 ...
反正就是挺萌的
liziyan20020227 发表于 2021-12-2 11:00
看了半天也没明白
当初学的时候就懵
是java不香了吗
C++大佬,这就是程序员嘛,爱了爱了
感谢lz分享ww
加油加油,我也在学