C语言是面向过程的,而C++是面向对象的
C和C++的区别:
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。
C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

很多小伙伴都老是会碰到疑问,其实还是基础没打扎实,这些题如果你不看答案你能知道多少呢?如果还有很多不知道就证明基础没打扎实,如果你还在入门纠结,如果你还在苦恼怎么入门!小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
指针是C语言里最强大的工具之一,也是最容易让人不解的主题,我们还是先把规则讲清楚点,对于一个内存单元来说,单元的地址(编号)即为指针,其中存放的数据才是该单元的内容。比如对于int a,&a即为变量a的地址,也即是指针,其中存放的数据就是a的值。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元,而定义指针要用到星号*。我们来用一个程序来说明:
程序最开始定义了一个变量a,然后把a的地址&a赋值给了指针变量p(记住&a是地址,是常量,是不可变的,但p是指针变量,它的值是可变),然后我们分别打印出了a的值,a的地址,p的值和p的地址,我们可以看到&a和p的值是一样的,因为我们之前刚赋值过,指针变量p和变量a一样也是有地址的,p的地址就是&p
为了便于大家理解,我画了个图,第一次画比较丑,不要介意,p和a都是我们高级语言的抽象形式,我们翻译成汇编或者机器语言这种形式时,是不会有变量a和变量p的,我们只会通过地址0022FF40和0022FF44来访问内存中的值,p的地址是0022FF40,p的值是0022FF44,即是a的地址,a的值在这里是一个未初始化的垃圾值2147315712,我们可以通过a来引用内存单元编号为0022FF44的值,也可以通过*p来引用,*p这种形式就是引用指针变量p所指向的内存单元存放的值。
我们接下来通过*p的方式来改变一下a的值
可以看到a的值从5变成了10,采用的就是*p=10这种方式,可能有人要问为什么不直接使用a=10呢,这不是很简单吗,在这个例子中确实如此,但是指针的强大在于它能够直接操作内存单元,这是很强大的功能,相信编写过驱动程序或者单片机程序的人应该能真切的体会到这点。我们来看下一个程序,可能大家运行的时候a的地址不是0022FF40,注意我们要把自己运行后a的地址赋值给p
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
可以看到我们这里是直接操作0x0022FF40这个内存单元,并没有额外的定义变量a,记住要在地址前加上强制类型转换(int *),因为指针所占的字节大小在我的电脑(32位机器)上是4字节的,不然的话编译可能会报错,当然我们也可以直接使用*(int *)0x0022ff40=10这种方式来把内存单元0x0022ff40的内容赋值为10,但是我们如果要经常使用这个内存单元,那么书写起来会变得很麻烦
下面通过一个程序来看看指针的运算
其中有三点需要注意的我指出来,1是指针最好是要初始化,这样会稍微安全一点,通常是把指针赋值为NULL或者是像这里赋值为变量的地址&i;2是可能有部分问会想指针为什么支持p++和p--这种运算,它不是地址吗,其实指针还可以支持任意的p+i,因为我前面讲过它的祖先B语言其实也支持这种运算,C语言是B语言的进化版,支持B语言的特性也很正常;3如果大家观察仔细的话,会发现pFollow值的变化是每次加1,但是pBefore的值的变化是每次减4,为什么呢,因为它们指向的类型不同,我们知道,在B语言里是没有类型的说法的,它所有的默认类型都是word,所以它很自然的p++就是往后移一个word,p--就是朝前移一个word,但是C语言里面有各种各样的类型,它们占有不同大小的字节数,为了保证不同类型指针的正确运算,指针的加减运算其实每次移动的是指针指向的类型的大小,比如我们这里pFollow指向的是char型的数据,所以我们每次pFollow++其实就是向后移动一个char字节大小(1),pBefore--就是向前移动一个int字节大小(4),p+i当然就是移动p指向的数据类型的字节大小*i。指针还可以做比较运算,但是并没有太多实际意义

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
上面说的指针是指针变量,抱歉在这里说明下,我也养成了不好的习惯。
这些是C/C++能做的
服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等
今天就到这里。欲知后事如何且听下回分解(手动滑稽)~



