C语言是面向过程的,而C++是面向对象的
C和C++的区别:
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。
C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。
程序存储模式分为大端模式和小端模式。
大端模式:字数据的高字节存放在低地址中,低字节存放在高地址中:
小端模式:字数据的高字节存放在高地址中,低字节存放在低地址中:
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
一个测试是大端模式还是小端模式的方法:
#include
#include
int CheckSystem()
{
int *p=NULL;
union check
{
int i;
char ch;
}c;
c.i=1;
return (c.ch == 1);
}
int main(void)
{
if(CheckSystem())
printf("小端模式");
else
printf("大端模式");
}
输出:
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
大端模式和小端模式主要在MCU编程是要考虑,在进行MCU编程之前,用上述程序测试一下。
一个奇怪的程序的理解:小端存储
#include
#include
int main(void)
int a[5] = {1,2,3,4,5};{
int *p1=(int*)(&a+1);
int *p2=(int*)((int)a + 1);
printf("%X %X %X %X ",&a,&a+1,(int)a,(int)a+1);
printf("%X %X ",p1[-1],*p2);
return 0;
}
输出什么?
输出如下:
即:&a == 0x12ff34,(&a+1) == 0x12ff48,((int)a) == 0x12ff34,((int)a +1) == 0x12ff35;
p1指向的是0x12ff48所代表的地址,0x12ff48=0x12ff34+0x14
p2指向的是0x12ff35所代表的地址。
&a即表示a[0]地址,a中各元素地址:
&a[0]==0x12ff34
&a[1]==0x12ff38
&a[2]==0x12ff3c
&a[3]==0x12ff40;
&a[4]==0x12ff44;
内存如下:
小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
可以看出p1指向的实际是a[4]的后面一个内存的地址
而p1[-1]值为5,为a[4],所以p1[-1]等价于p1-1.由于p1指向0x12ff48,所以p1-1指向0x12ff44,也就是a[4]的地址,
所以p1[-1]为5,同理可推断出p1[-2]值为4,p1[-3]值为3,p1[-4]值为2,p1[-5]值为1
再看p2指向的地址为0x12ff35,也就是上图中01后面的那个00所占有的地址,那么*p2指向一个整型值,应该是地址0x12ff35~0x12ff38内的值,为2000000
同理可推断,若int *p2=(int*)((int)a+2);则*p2=20000;若int *p2=(int*)((int)a+3);则*p2=200;若int *p2=(int*)((int)a+4);则*p2=2;
这些是C/C++能做的
服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等