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关键字,标识只用于本文件的函数。
22.取址运算可以直接计算出C语言中任何一个变量的地址。地址就是数据元素在内存中的位置标示。可以用无符号整数来保存一个变量的地址。
23.指针用来指向某个内存地址。C语言指针也是有类型的,不同类型的指针,只能标示不同类型数据的内存地址,使用多重指针来保存指针数据的地址。
24.字符串等价于字符数据,字符指针可以保存字符数据的首个元素的地址,进而访问字符数据的每个元素。
C语言相关知识的更多相关文章
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- Ubuntu 字体修改以及字体的相关知识 分类: ubuntu 2014-06-19 21:46 81人阅读 评论(0) 收藏
Ubuntu chrome 字体修改 打开任意一张含有输入框的网页,比如Google首页,然后右键点击"搜索框"会拉出一个菜单,我们这样选: 拼音检查选项==>语言设置==& ...
- HTML入门基础教程相关知识
HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...
- 引用 字库编码Unicode相关知识
引用 weifeng.shen 的 字库编码Unicode相关知识 1. 各地编码 首先说明一下现在常用的一些编码方案: 1. 在中国,大陆最常用的就是GBK18030编码, ...
- 使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版(二)——部署配置及相关知识
---恢复内容开始--- 一.前提: 1.django项目文件已放置在云服务器上,配置好运行环境,可正常运行 2.云服务器可正常连接 二.相关知识 1.python manage.py runserv ...
- linux 创建守护进程的相关知识
linux 创建守护进程的相关知识 http://www.114390.com/article/46410.htm linux 创建守护进程的相关知识,这篇文章主要介绍了linux 创建守护进程的相关 ...
- X86 寻址方式、AT&T 汇编语言相关知识、AT&T 与 Intel 汇编语言的比较、gcc 嵌入式汇编
注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...
- 学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等)
这篇文章主要介绍了学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等),需要的朋友可以参考下 Ruby 这个就不用多说了 RVM 用于帮你安装Rub ...
- C语言的知识与能力的自评
1.我希望将来上班的地方是自己所感兴趣的,正在寻找自己感兴趣的,并且正在普及IT行业的相关知识. 2.我认为学习就是一个自我成长和自我提升以及认识世界的方法,学习的作用是可以不断的提升对这个世界的认识 ...
随机推荐
- SpringBoot基础学习(一) SpringBoot概念、简单案例实现、单元测试及热部署讲解
SpringBoot概念 Spring优缺点分析 Spring优点 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,无需开发重量级的 ...
- xshell中登录服务器图形化界面
安装全套的xmanager程序 打开xshell工具程序 点击新建 输入ip等必要信息 点击隧道,英文版为tunnel 勾选红色的选项1和2 填写一些用户名和密码信息(图就略了O(∩_∩)O) 敲入指 ...
- bat使用方法汇总
前言 由于日常科研工作中使用C/C++比较多,在进行大规模运行时涉及到的批量处理操作较多,遂将目前遇到的情况记录如下,以便查看: 1.for循环 最基本的for循环操作为在一些数中遍历,如下例子.se ...
- vmware workstation linux虚拟机点击suspend会卡死
vmware workstation linux虚拟机点击suspend会卡死, 现象如图, 我测过很多发行版都有这个问题 临时解决方案是关闭suspend功能 sudo systemctl mask ...
- NVIDIA数据中心深度学习产品性能
NVIDIA数据中心深度学习产品性能 在现实世界的应用程序中部署AI,需要训练网络以指定的精度融合.这是测试AI系统的最佳方法-准备将其部署在现场,因为网络随后可以提供有意义的结果(例如,对视频流正确 ...
- MinkowskiEngine demo ModelNet40分类
MinkowskiEngine demo ModelNet40分类 本文将看一个简单的演示示例,该示例训练用于分类的3D卷积神经网络.输入是稀疏张量,卷积也定义在稀疏张量上.该网络是以下体系结构的扩展 ...
- 【NX二次开发】Block UI 枚举
属性: 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical ...
- WEB安全新玩法 [1] 业务安全动态加固平台
近年来,信息安全体系建设趋于完善,以注入攻击.跨站攻击等为代表的传统 Web 应用层攻击很大程度上得到了缓解.但是,Web 应用的业务功能日益丰富.在线交易活动愈加频繁,新的安全问题也随之呈现:基于 ...
- Jetpack Compose和View的互操作性
Jetpack Compose Interoperability Compose风这么大, 对于已有项目使用新技术, 难免会担心兼容性. 对于Compose来说, 至少和View的结合是无缝的. (目 ...
- 【Python】(六)Python数据类型-列表和元组,九浅一深,用得到
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文分十个章节介绍数据类型中的列表(list)和元组(tuple),从使用说到底层实现,包您满意 干货满满,建议收藏,需要用到时常看看. 小伙伴们 ...