long8.com

当前位置:龙8官网long8 > long8.com > 学习笔记

学习笔记

来源:http://www.sketchydesignstudio.com 作者:龙8官网long8 时间:2019-10-14 00:15

宣称:小编的c++笔记是建设构造在王信阳先生的摄像和图书的根底上的,笔者觉着这或者是中华最棒的c++教学。我一度获得王先生的批准,推荐大家去拜访,Tencent课堂网站其一笔记十分大学一年级些是为着给本人看,当然希望大家不吝啬你们的主见思路,多多支持。
c++看名称就会想到其意义 ++意味着c++是树立在c的功底上的,c++原本叫做 c with class 带类的c。根据常规 "Hello Word"走起

c++

1 #include <iostream>
2 
3 using namespace std;
4 
5 int main(int argc, char *argv[])
6 {
7     cout << "Hello World!" << endl;
8     return 0;
9 }

作为比较c

1 #include <stdio.h>
2 
3 int main(int argc, char *argv[])
4 {
5     printf("Hello World!n");
6     return 0;
7 }

看起来基本结构很相似,笔者所接触的程序语言无论是python matlab c  大概都是从数据类型开首的,c++也不例外。毕竟编制程序语言正是管理数量的工具,最后仍然要回归到人上。类型巩固

真正的const

c语言中 const  修饰变量的时候 变量会形成多少个常量 不过这是相对的呢?c语言最大的特性正是放肆,指针是C语言的灵魂,十分的少说上前后相继,可是大家先是得回看一下 const 是怎么修饰变量的

 1 #include <stdio.h>
 2 
 3 int main(int argc, char *argv[])
 4 {
 5 
 6    const int a=1;//const 修饰 a  等价于 int const a=1;
 7    const int *b=0;//const 修饰*b  等价于 int const *b=1;
 8     const int * const p=2;// const 修饰 *p  和p  指针和指针所指的变量都不能改变
 9    return 0;
10 }

 方法:去掉类型看const修饰什么

c语言中的const

1 #include <stdio.h>
2 int main(int argc, char *argv[])
3 {
4     const int a=1;
5     int *p=&a;
6     *p=1024;//明修栈道 暗度陈仓
7     printf("%dn",a);
8     return 0;
9 }

能够见见c语言的const并不严谨 const int *种类赋值给了int * 能够经过指针直接访谈变量

c++中的const

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main(int argc, char *argv[])
 6 {
 7     const int a=100;//c++中const变量只能在定义时赋值
 8     int *p=&a;//无法从const int * 转换为int *
 9     cout <<a << endl;
10     return 0;
11 }

编写翻译结果:

图片 1

先是行是警报应该是中文编码难点,忽视它,首要看第二行,能够看看c++中const变量是真的的一点办法也未有修改,类型检校相比较严酷,况且c++中const 变量只好在概念的时候赋值,c语言能够不复制,c++的量体裁衣突显无疑。

再来体会一下互相的差距

 1 #include <stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 int main(int argc, char *argv[])
 5 {
 6     int arr[2][3];
 7     char *p="hello c++";
 8     char *q=malloc(strlen(p)+1);//void * 转换为 char*不过推荐大家加上强转
 9     strcpy(q,p);
10     printf("%sn",q);
11     free(q);
12     int **a=arr;//const int * 数组名是const的指针变量 赋值给指向指针的指针
13     return 0;
14 }

c++中

 1 #include <iostream>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 using namespace std;
 5 
 6 int main(int argc, char *argv[])
 7 {
 8     int arr[2][3];
 9     char p[]="hello c++";
10     char *q=malloc(strlen(p)+1);//void * 转换为 char*不过推荐大家加上强转
11     strcpy(q,p);
12     cout<<q<<endl;
13     free(q);
14     int **a=arr;//const int * 数组名是const的指针变量 赋值给指向指针的指针
15     return 0;
16 }

运营结果:

图片 2

c++相对于c比较审慎 新添逻辑类型bool(c99也可以有这种类型,不过本人是以标准c来相比较的)

在c语言中0为假非零为真 c++新建了逻辑类型bool来表示  十分的少说上代码

 1 #include <stdio.h>
 2 
 3 int main(int argc, char *argv[])
 4 {
 5 
 6    if(1)
 7    {
 8        printf("ture");
 9 }
10 else{
11        printf("flase");
12    }
13    return 0;
14 }

c++

 1 #include <iostream>
 2 using namespace std;
 3 int main() {
 4  bool flag = true;
 5     if(flag)
 6         printf("flag is truen");
 7     else
 8         printf("flag is flasen");
 9 
10     printf("sizeof(flag) = %d sizeof(bool) = %dn", sizeof(flag),sizeof(bool));
11 
12     flag = 2000;
13     printf("flag = %dn",flag);
14     return 0;
15 }

引用王先生的话“c 语言的逻辑真假用 0 和非 0 来表示。而 C++中有了现实的门类,但其本质,仍是 三个 char 类型的变量可被 0 和非 0 的多少赋值。”就算能被赋值不过用printf输出后或许1举个例子bool类型被赋值但是printf后依旧逻辑值1,认为那个设定有一些意料之外。

bool类型的真相(枚举类型)

#include <stdio.h>
enum BOOL
{FLASE,TRUE};
int main(int argc, char *argv[])
{
    enum BOOL flag=TRUE;//用枚举变量创建逻辑类型
    if(flag)
    printf("truen");
    else
    printf("flasen");
    flag=100;//C语言中枚举不严格
    return 0;
}

能够见见bool类型本质上正是一种枚举,不过C语言中的枚举并不严俊,那么首先枚举是哪些?

百度完善:在数学和管理器科学议论中,多个集的枚举是列出有个别周朝体系集的富有成员的次序,大概是一种特定类型对象的计数。这两种档案的次序常常(但不连续)重叠。[1]  是贰个被命名的整型常数的集合,枚举在平常生活中很宽泛,举个例子表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THU凯雷德SDAY、FEnclaveIDAY、SATUQX56DAY就是三个枚举。

王先生的枚举:c 语言中枚举本质正是整型,枚举变量能够用随便整型赋值。而 C++中枚举变量, 只好用被枚举出来的要素开始化。枚举的常被用来代表宏常量。

自己所理解的枚举正是列出全体相当大恐怕的数据集合,枚举变量必得在内部选取。由于枚举变量定义的时候集结里面包车型客车数目被赋值,所以副成效能够用来替代宏常量。

c++的枚举

 1 #include <iostream>
 2 
 3 using namespace std;
 4 enum day
 5 {SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY};
 6 int main(int argc, char *argv[])
 7 {
 8     day today=SUNDAY;
 9     today=100;
10     cout << today<< endl;
11     return 0;
12 }

运维结果:

图片 3

c++是实留意义上的枚举,枚举变量不可能被赋值大肆整型。
小结:从完整上看c++比c严苛,c比c++自由。
扯蛋时间:笔者爱怜c++的bool,枚举,不过笔者也喜欢c的const,自由正是约束,相对的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文由龙8官网long8发布于long8.com,转载请注明出处:学习笔记

关键词: