文章目录
本笔记根据《C/C++语言程序设计》龚尚福版以及个人理解总结修改,不能保证内容完全准确,仅供参考。
看这个需要一定C语言或其他语言基础,大部分是书上的内容,小部分是我个人的理解和疑惑的地方,还有的是网上各路大佬的文章。做这个是为了方便自己学习查阅和知识点的详细拓展(防止手贱想打ow),如果你有更好的见解,可以告诉我或自行转载引用补充。
第一次修改(2019年8月4日):C++对于C的一般扩充
第二次修改(2019年8月5日):C++中的函数
第三次修改(咕咕咕):C++的输入与输出流
有人去餐厅点了鸽子汤,汤里面没有鸽子。但是他说这个汤很正宗,噢?
[前言]C++从C发展而来,它继承了C语言的优点,并引入了面向对象的概念,同时也增加了一些非面向对象的新特性,这些新特性使得C+ +比C更简洁、更安全。
一、C++对于C的一般扩充
[指南]主要介绍了C++ 对C的非面向对象特性的扩展,包括新增的关键字、注释、类型转换、灵活的变量声明、const、struct 、作用域分辨符、 C++ 的动态内存分配、引用、主函数、函数定义、内置函数、缺省参数值、重载函数、 C++的输入输出流等。
1.新增的关键字
C++在C语言的基础上增加了许多关键字
下面是一些常用的关键字:
asm catch class delete friend inline new operator private protected public template virtual try using
2. 注释方式
C语言使用/* 和 */作为注释分界的符号,而C++ 除了保留这种原有的注释模式,还新加了单行注释符号 //
对于这个问题我也感觉到十分诧异,在平时注释的时候并没有发现C不支持单行注释。经过百度后,发现C99才支持单行注释。所以之前的TC是不支持单行注释的。完美解释了我实验课用TC注释一直出错(滑稽)
3. 类型转换
C++ 支持两种不同的类型转换方式
int i=0;
long n=(long)i; //C的类型风格
long m=long(i); //C++的类型风格
C++的这种新风格更像是调用了函数,可读性更好
4.灵活的变量声明
#include <stdio.h>
int main()
{
printf("100分!");//不使用变量
int score;//使用变量
score = 100;
printf("是%d分!",score);
return 0;
}
这段代码会因为score在第一个printf后报错
问题根源:编译器问题——C89和C99
C89规定,在任何执行语句之前,在块的开头声明所有局部变量。
在C99以及C++中则没有这个限制,即在首次使用之前,可在块的任何位置都可以声明变量。
我在学习C的过程中接触的应该是C99标准。看到这里我感觉到了C99的强大…还有我是不是要换本书看。讲得太多我好像有点混乱(枯了)
5.const
1. const定义常量
使用const定义常量可以避免define引起的歧义
#include <iostream>
int main()
{
int a=1;
#define T1 a+a
#define T2 T1-T1
cout<<"T2 is "<<T2<<endl;
return 0;
}
输出的是2而不是0
#include <iostream>
int main()
{
int a=1;
const T1 a+a
const T2 T1-T1
cout<<"T2 is "<<T2<<endl;
return 0;
}
输出结果为0
2. const 修饰指针
首先存在 int b=500;
a是一个指向常量的普通指针变量,不是常指针。
const int *a=&b;
int const *a=&b;
//所以a的值是可以改变的
int c=3; //√
a=&c;
//但是对于a指向的内容不能改变
*a=3; //×
指针本身是常量(常指针)而指针所指向的内容不是常量
int* const a=&b;
//不能对指针本身进行更改操作
a++; //×
//它指向的数据可以改变
*a=3; //√
指针本身和它指向的内容都是常量
const int* const a=&b;
//指针本身和指向内容都不能修改
a++; //×
*a=3; //×
3. const 在函数中的应用
const 还常用于限定函数的参数和返回值。函数参数如果使用const 声明,则在该函数中不能修改参数。例如:
float fun