第一模块:
课程名称:百度大牛带你结合实践重学C++
章节:4-1 ~ 4-4
讲师姓名:quickzhao
第二模块:
课程内容:
4-1 ~ 4-4小节主要讲解了字符语法的常见陷阱和C语言在数组上的退化问题
第三模块:
学习心得:
4-1 字符语法的常见陷阱
'':单引号表示【字符】
"":双引号表示【字符串】
eg:
char c1='yes' // 编译器编译时可以运行通过,但会发生截断,不同编译器的截断方式不一样
char c1='a' // 这种就是正常的声明和定义一个字符
"y" 等价于 'y','\0' // C中所有的字符串都是用【\0】进行结尾的
补充C++中的基本数据类型:
布尔型bool
字符型char
整型int
浮点型float
双浮点型double
无类型void
宽字符型wchar_t
基本数据类型的特点是:没有【值的引用】,直接就是【值本身】
eg:
const char* c2 = "/" // 语法合法,因为【"/"】是一个字符串,属于引用类型,引用类型存在【值引用】,所以,上面的效果本质上就是将【"/"】的值引用赋值给c2这个指针。引用赋值给指针是允许的。
const char* c2 = '/' // 语法不合法,因为【'/'】是一个字符,字符不存在值引用,所有这里就会报错
改造:
char c2 = '/';
const char* c2p = &c2 //通过取地址符号,获取【'/'】值所在的地址(地址本质上也是一个引用)
C语言的特点:
高级语言中的低级语言,小巧,高效,接近底层
C++对C语言在字符、字符串上的优化:
C++中引入了string类型,用于表示字符串,在语法形式上对【字符】和【字符串】进行了区分。
C++是C的超集,所以在C++中可以使用【C的方式进行编程】,但是是不推荐的,能用更好清晰的方式,就尽量用更清晰的方式去编程。
C++ 中通过string来规避C中的字符、字符串陷阱,eg:
4-3 C语言指针和数组的常见问题
C语言:
1.数组做为函数参数时存在退化行为,即:数组会退化为【数组的指针】
eg:
问题的根本原因:在语法层面避免【大对象】作为参数进行传递
从而节约内存空间
C++中的解决方案:
STL容器与引用的使用,实现底层包装,保证效率的同时保证语法上的简单安全。
两种写法的区别:
补充:
1.引用和指针的区别:
引用可以拿到对象的所在地址;
指针不但可以拿到对象的所在地址,还能对地址进行计算;
处理二维数组,eg:
第四模块:
课程截图: