链接器如何解析多重定义的全局符号

链接器的输入是一组可重定位目标模块。每个模块定义一组符号,有些是局部的(对定义该符号的模块可见),有些是全局的(对其他模块也可见)。如果多个模块定义同名的全局符号,则Linux会这么处理: 函数和已初始化的全局变量是强符号,未初始化的全局变量是弱符号。 不允许有多个同名的强符号,如函数名和已初始...

2019-03-26 10:06:41

阅读数 31

评论数 0

C/C++常见面试题整理---语言基础知识部分

指针和引用的区别 指针指向一块内存,它的内容是指向内存的地址;引用是某内存的别名。 引用使用时无需解引用;指针则需要解引用。 引用不能为空,指针可以为空。 引用在定义时被初始化一次,之后不可再改变;指针可变。 程序为指针变量分配内存区域,而引用不需要分配内存区域。 memcpy和strcpy的...

2019-03-26 10:00:17

阅读数 10

评论数 0

数组首地址与数组首元素首地址

二者并不是一个概念! 举个例子: int a[] = {1,2,3,4,5}; a作为右值时,意义同&a[0]。即数组首元素首地址; &a[0],数组首元素首地址 &a,数组首地址 ...

2019-03-26 09:43:07

阅读数 71

评论数 0

从零开始做两轮自平衡小车(一)

引言在玩平衡车或四轴时,经常避不开姿态解算部分。而要了解飞机姿态,需要首先知道什么是地面 坐标系和机体坐标系。地面坐标系 1. 在地面上选一点Og 2. 使xg轴在水平面内并指向某一方向 3. zg轴垂直于地面并指向地心 4. yg轴在水平面内垂直于xg轴,其指向按右手定则确定机体坐标系...

2017-07-05 22:53:43

阅读数 6665

评论数 0

IEEE浮点标准学习续

非规范化浮点数当浮点数的指数为允许的最小指数值,即emin(-126)时,尾数不必是规范化的。如,规范化浮点数1.0x2^(-129)可表示为0.001x2^(-126)。为了保存非规范化浮点数,IEEE标准采用了类似处理特殊值零时所采用的的办法,即用特殊的指数域值emin-1加以标记,此时实际保...

2017-04-25 20:19:30

阅读数 377

评论数 0

如何在两个不同的vim文件之间进行复制粘贴

相信我们在使用vim进行编辑的时候,经常碰到怎么把a文件的内容拷到b文件中去。本文教你怎么使用vim跨文件进行编辑操作。常规想法是打开两个vim,然后进行yy和p操作,但是实践证明根本是不行的。此时,我们需要分割窗口,然后就可以复制粘贴了。步骤如下:假设我要把srv.c文件的readline函数整...

2017-04-24 12:49:02

阅读数 13955

评论数 2

socket编程入门(三)

下面给出开发简单客户回射服务器程序迭代过程。第一版程序见上一篇博客末尾,由于服务器关闭后处于TIMEWAIT状态,因此存在一个问题:短时间内服务器程序不能重启并使用。第二版(服务器端使用了REUSEADDR选项)使用这个选项后,即使服务器处于TIMEWAIT状态,也可以重新启用。 下面给出实现代...

2017-04-23 16:12:02

阅读数 177

评论数 0

socket编程入门(二)

在动手编写socket通信程序之前,还需要补充一些可能用到的函数。本文列出这些函数。编程使用到的函数 socket int socket(int domain,int type,int protocol) 用于创建一个套接字用于通信,成功返回非负整数,失败返回-1 bind int bind...

2017-04-23 15:06:43

阅读数 170

评论数 0

socket编程入门(一)

什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口。不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。 socket编程基础基础知识之大小端和字节序 大端:数据低位在地址高位 小端:数据低位在地址低位 如0x12345678 按...

2017-04-23 14:19:45

阅读数 168

评论数 0

linux c编程工具使用之gdb

gdbgdb:GUN debugger 启动程序,可按照用户自定义的要求随心所欲的运行程序。 可让被调试的程序在用户所指定的调试的断点处停住(断点支持条件表达式) 当程序停住时,可以检查此时程序中所发送的事。 动态改变程序的执行环境。 启动gdb调试程序 gdb gdb core gdb ...

2017-04-21 15:27:52

阅读数 157

评论数 0

linux c编程之Makefile使用

make工具通过一个称为Makefile的文件来完成并自动维护编译工作。 Makefile文件描述了整个工程的编译、链接等规则。 Target… : DEPENDENCIES… COMMAND … 目标:程序产生的文件,如可执行文件和目标文件;目标也可以是可执行的动作,...

2017-04-21 10:05:25

阅读数 278

评论数 0

vim使用的常见快捷键

快捷键汇总翻页/命令模式/ 向前翻 ctrl+f 向后翻 ctrl+b 行号/底行模式/ 设定行号 set nu 取消行号 set nonu 光标移动/命令模式/ 0 移到行首(注意是数字0) $ 移到行尾 G 移到文件尾(注意是大写) 1G 移到文件首(注意是数字1和大写G,中间没有空格) nG...

2017-04-20 16:51:44

阅读数 147

评论数 0

linux编程之静态链接库和动态链接库

静态库 .a 程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。 共享库 .so/.sa 程序在运行的时候才去链接共享库的代码,多个程序共享使用库的代码。 * 一个与共享库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不...

2017-04-19 11:25:13

阅读数 143

评论数 0

浅谈HTTP中Get与Post的区别

浅谈HTTP中Get与Post的区别   Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,D...

2017-04-11 11:44:40

阅读数 172

评论数 0

对象三大基本特性和五大基本原则

透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.三大特性是:封装,继承,多态  所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了...

2017-04-10 21:52:21

阅读数 1108

评论数 0

从0到n-1中随机等概率输出m个不重复的数

题目描述假设n远大于m,编程实现从0到n-1中随机等概率的输出m个不重复的数。void knuth(int n,int m) { srand((unsigned int)time(0)); for(int i = 0;i<n;i++) { if(rand()%(n-i)&...

2017-04-10 21:07:31

阅读数 1473

评论数 0

ICMP:Internet 报文控制协议

1 引言 2 ICMP报文的类型 3 ICMP地址掩请求与应答 4 ICMP时间戳请求与应答 5 ICMP端口不可达差错 1 引言 ICMP经常被认为是IP层的一个组成部分。它传递差错以及其他需要注意的信息。ICMP报文通常被IP层或更层协议(TCP或UDP)使用。一些ICMP报文...

2017-04-09 09:13:56

阅读数 409

评论数 0

华为OJ-简单错误记录模块

题目描述 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和 行号。要求如下: 1. 记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配) 只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并)。 2. 超过16个字符的...

2017-04-04 15:56:22

阅读数 163

评论数 0

定点数的几个知识点

数的定标概念 通过设定小数点在数据的不同位置,就可以表示不同大小和精度的小数。 Q和S表示法 以16位数据为例,Q和S表示法的存储格式为: Qx:x位用来表示小数部分,(15-x)位用来表示整数。 Sx.y:其中x+y=15,x位表示整数,y位表示小数。 精度:1/2^x...

2017-04-01 10:54:25

阅读数 2021

评论数 0

华为OJ-输出单向链表中倒数第k个节点

题目描述 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。 链表结点定义如下:struct ListNode { int m_nKey; ListNode* m_pNext; };函数原型ListNode* FindKthT...

2017-03-30 17:04:19

阅读数 155

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭