c
Kaih23
三思方举步,百折不回头
展开
-
C/C++指针
在C/C++中,不允许将一个常量复制给一个指针变量,最容易犯的错误就是将一个指向常量的指针复制给另一个指针变量:eg: float temperature = 37.5 ; const float * p = & temperature; float *pi = p;编译器会报错第三行,不能将一个 const float * p 的指针赋值给 float *原创 2015-02-02 19:25:59 · 508 阅读 · 0 评论 -
从结构体成员获取结构体地址的方法
今天朋友面试,有一个问题他没回答上来,我便在这里给出答案,希望能帮助到一些准备找工作的同学。面试官会问道:已经知道结构体对象中的一个对象,如何获取结构体的地址呢?因为结构体成员在内存中的存储数据是按照成员定义顺序存储的,因此,要回答这个问题,首先得解决两个问题1):该结构体成员的地址2):该结构体成员在结构体中的偏移地址意识到这两个问题,还得注意两个细节:1):C/C++语原创 2016-07-12 16:50:10 · 8108 阅读 · 0 评论 -
C语言函数返回值实现机制
我们知道,在子函数中返回局部变量的值是不会出什么问题的,但是,返回一个局部变量的指针或者引用时,在后续解引用这个指针时就得不到理想的结果,原因在于:子函数中的自动变量(栈内存中的变量)会在子函数返回后被释放掉,但是返回值会被保存在cpu的寄存器中,因此,在返回子函数后,返回值能从寄存器中将返回值赋值给调用函数中的变量,如果返回值是一个指针,那么该指针所指的内存地址会被保存在寄存器中,但是,指针指向原创 2016-06-29 20:18:34 · 4014 阅读 · 0 评论 -
ARM常用指令教程
ARM指令教程 ARM汇编程序特点:l 所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通用寄存器来完成.因此代码中大量看到LDR,STR指令来传送值.l ARM汇编语句中.当前语句很多时候要隐含的使用上一句的执行结果.而且上一句的执行结果转载 2016-05-20 17:20:47 · 1065 阅读 · 0 评论 -
ucos中OSMemCreate()函数难点解析
该函数的功能是创建一块内存分区,并通过内存控制块指针来管理,具体功能为:堆内存addr地址处已经分配了一块连续内存分区,将该内存分区划分为blksize大小的不同内存块来管理,并配置内存块管理结构指针pmem。函数源码如下:OS_MEM *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *err){原创 2016-04-22 00:27:40 · 2543 阅读 · 3 评论 -
vi使用方法
编辑一个文本文件是经常使用到的计算机操作。我们想做的大多数事情都需要使用某种文件编辑。文本编辑器会方便文件的创建和修改。编辑一个文本文件是经常使用到的计算机操作。我们想做的大多数事情都需要使用某种文件编辑。文本编辑器会方便文件的创建和修改。这些文件也许会包含备记录、日程表、程序源代码等等。文本编辑器是简化的字处理器,就不存在字处理器所具有的黑体、居中、下划线等等这印刷上的特点。当然每一种操作系统软转载 2016-03-08 10:51:52 · 693 阅读 · 0 评论 -
C语言编译链接流程以及重要特性在编译器中实现
C语言算是大学里接触的最早,用的最"多"的语言了,对于大部分学习计算机的学生基本上是从开始学习C语言起,凭借着一句经典的"hello, world!"迈入了计算机的世界的,初体味了一把这个世界还有个叫编程的活。作为系统级的开发首选语言,只诞生以来就屹立不倒,C语言的重要性是不言而喻的。就是怀着这种对C的无比敬意开始了我的伪程序之旅。然而大学里面没写过什么像样的东西,说来惭愧,什么课程设计,或是自称转载 2016-03-01 20:27:28 · 665 阅读 · 0 评论 -
字节对齐方式
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式转载 2015-10-30 11:50:35 · 570 阅读 · 0 评论 -
字节对齐
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某转载 2015-10-30 10:30:42 · 441 阅读 · 0 评论 -
生僻的C语言数据结构:位域
C语言提供了一种数据结构,称为“位域”或“位段”。位域是指信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。为了节省存储空间,并使处理简便,所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。位域定义与结构定义相转载 2015-01-21 10:33:47 · 656 阅读 · 0 评论 -
C++之 new 动态分配内存
动态内存分配1.堆内存分配 :C/C++定义了4个内存区间:代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store)。堆的概念:通常定义变量(或对象),编译器在编译时都可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。这种内存分配称为静态存储分配;有些操作对象只在程序转载 2015-02-04 09:37:16 · 1534 阅读 · 0 评论 -
EXTERN C 关键字
当我们通过C++来调用一些按照C语言开发的库时,利用C++编译器编译该程序后会发现编译器报错,大概意思是:找不到某个函数的定义。原因:函数链接阶段无法找到C函数。C++中使用了函数重载的机制,导致函数名相同的函数功能相差可能非常大,而C语言没有函数重载机制,因此不同函数仅通过函数名来区分。因此,利用C++编译器编译函数时,函数被编译后的名称将包含函数的参数类型,用以区别相同函数名而不同参数的函原创 2016-07-18 11:08:20 · 344 阅读 · 0 评论