• C语言相关知识


    1.指针:在程序中定义了一个变量,在进行编译时就会给该变量再内存中分配一个地址,通过访问这个地址可以找到所需变量,这个变量的地址成为该变量的指针。指针看作是内存中的一个地址,多数情况下,这个地址是内存中另一个变量的位置。一个变量的地址成为该变量的指针。【指针是变量在内存中的地址】


    2.C语言中提供了地址运算符&来标识变量的地址,*是指针运算符,表示该变量是一个指针变量。**表示指向指针变量的指针变量。


    3.在低级语言的汇编语言中都是直接通过地址来访问内存单元,在高级语言中一般使用变量名来访问内存单元,但是C语言作为高级语言提供了通过地址来访问内存单元的方式。


    4.指针变量也可以指向一个函数。一个函数在编译时被分配一个入口地址,该入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。返回指针值的函数简称为指针函数。


    5.预处理功能是C语言特有的功能。预处理程序包含许多有用的功能,如宏定义、条件编译等,使用预处理功能便于程序的修改、阅读、移植和调试,也便于实现模块化程序设计。


    6.通过内存组织方式可以看到,堆用来存放动态分配内存空间,而栈用来存放局部数据对象、函数的参数以及调用函数和被调用函数的联系。在C程序中是用malloc和free函数来从堆中动态分配和释放内存。


    7.GCC:是由 GNU 开发的编程语言编译器。不仅功能强大,而且可以编译如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言,GCC也是跨平台交叉编译的首选,它不仅支持Intel的x86系列,同时也支持MIPS,ARM,PowerPC,SPARC等等处理器。可以这么说,即使GCC不是世界上效率最高的编译器,它也一定是世界上最全面的编译器,尤其适合在嵌入式领域的开发编译。


    8.Makefile:make命令是GNU的工程化编译工具,它用于编译大量互相关联的源代码,使用它可以实现项目的工程化管理,提高开发效率。Makefile的作用就是在执行make命令的时候指定编译和链接的规则,包括源代码文件之间的链接关系、依赖关系等。Makefile文件就像shell脚本一样,在其中也可以执行操作系统的命令。

    9.java是完全面向对象的,c是面向过程的,c++继承了c,但是也加入了面向对象的方法。Java 是由 C++发展而来的,保留了 C++的大部分内容,其编程方式类似于 C++。但 Java 的句法更清晰、规模更小、更易学。C 和 C++不支持字符串变量,在 C 和 C++程序中使用“Null”终止符代表字符串的结束。

    10.在C语言中,使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起。

    11.typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。


    12.signed和unsigned用于修饰整数类型(包括char,从ANSI C89标准开始支持)。signed表示有符号,unsigned表示无符号。unsigned和signed在一种类型下,unsigned表示在这个范围大小的整数,signed一般都是在这个范围内的从负到正。

    13.->符号是用于指向结构体子数据的指针,用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。

    14.链表是相同类型的若干个结构体用其自身携带的指针按照一定顺序串联成的一个链。举个简单例子进行类比:struct node{ int a; struct node *next; };把这个链表节点的结构体struct node看作是人,结构体内的next指针看作是人的一只手,这只手只能用于指向人(别人或自己)。如果有多个人排成一排,每个人都举起右手指向右边的人,就形成一个人组成的链表。


    15.汇编语言:是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。汇编语言保持了机器语言的优点,具有直接和简捷的特点,可有效地访问、控制计算机的各种硬件设备,且占用内存少,执行速度快,是高效的程序设计语言。由于是直接控制硬件,且简单的任务也需要很多汇编语言语句,增加了编写和调试的复杂性。嵌入式系统的底层驱动、计算机的BIOS还是要用汇编语言实现。


    16.C最主是对性能要求高,逻辑不复杂的相关开发。C++主要是对性能要求高和逻辑复杂的游戏开发。C/C++的规则比较宽泛,可以用来进行一些更贴近硬件的开发。

    17.符号::是作用于限定符号,在c++中标识作用域和所属关系,是运算符中等级最高的。用法:在类外部声明成员函数,调用全局函数,调用类的静态方法。

    18.符号:=意思是定义为或者是替换。

    19.中断:在网络中起着通信网络作用,以协调系统对各种外部事件的响应和处理。

    20.volatile 关键字作用:编译时不优化,执行时不缓存,每次需从内存中读出(保证内存的可见性)。 使用场景:用于多线程或多CPU编程。

    21.extern关键字,标识变量和函数定义在别的文件中。static关键字,标识只用于本文件的函数。

  • 相关阅读:
    [笔记].新唐M051型号的后缀解读
    [转载].怎样理解阻抗匹配
    [原创][连载].基于SOPC的简易数码相框 Nios II SBTE部分(软件部分) TFTLCD(控制器为ILI9325)驱动
    [转载].关于STM32的CPU为32位,定时器却为16位的探讨
    [笔记][朝花夕拾][Multisim基础电路范例].第一章 RLC电路,第九节 基尔霍夫电流定律
    [原创].如何解决Nios II SBTE中出现的undefined reference to `xxx'警告
    [原创][连载].基于SOPC的简易数码相框 Nios II SBTE部分(软件部分) ADS7843触摸屏驱动测试
    [笔记][朝花夕拾][Multisim基础电路范例].第一章 RLC电路,第十一节 叠加定理
    [笔记].怎样在IAR中加入编译所需库的头文件?
    [原创][连载].基于SOPC的简易数码相框 Nios II SBTE部分(软件部分) 从SD卡内读取图片文件,然后显示在TFTLCD上
  • 原文地址:https://www.cnblogs.com/kerwincui/p/11616341.html
Copyright © 2020-2023  润新知