从C到C++学习笔记


本笔记根据《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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值