
编程基础
文章平均质量分 78
zhaqiwen
这个作者很懒,什么都没留下…
展开
-
Linux开发环境下的动态库和静态库
1. 什么是库 在 windows 平台和 linux 平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 由于 windows 和 linux 的本质不同,因此二者库的二进制是不兼容的。 本文仅限于介绍 linux 下的库。 2. 库的种类 linux 下的库有两种:静态库和共享库(动态库)。 二者的不同点在于代码被载入的时刻转载 2012-07-20 19:40:03 · 855 阅读 · 0 评论 -
C语言中的堆和栈
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教转载 2012-08-21 16:55:14 · 919 阅读 · 0 评论 -
C语言中的可变参数
C语言的变长参数在平时做开发时很少会在自己设计的接口中用到,但我们最常用的接口printf就是使用的变长参数接口,在感受到printf强大的魅力的同时,是否想挖据一下到底printf是如何实现的呢?这里我们一起来挖掘一下C语言变长参数的奥秘。先考虑这样一个问题:如果我们不使用C标准库(libc)中提供的Facilities,我们自己是否可以实现拥有变长参数的函数呢?我们不妨试试。一转载 2012-08-24 16:17:00 · 1139 阅读 · 0 评论 -
C语言中长度为0的数组
前面在看Xen的源码时,遇到了一段代码,如下所示:注意上面最后一行的代码,这里定义了一个长度为的数组,这种用法可以吗?为什么可以使用长度为0 的数组?长度为的数组到底怎么使用?……这篇文章主要针对该问题进行简单的讲解。废话不多说了,现在就开始。长度为的数组在标准c和c++中是不允许的,如果使用长度为的数组,编译时会产生错误,提示数组长度不能为。但在GNUc中,这种用法却是合转载 2012-08-24 16:20:49 · 20519 阅读 · 0 评论 -
C语言函数返回类型为指针时的一些问题
1.先看程序:#includechar *returnStr(){ char *p = “tigerjibo”; return p;}int main(){ char*str; str =returnStr();转载 2012-09-08 17:07:59 · 8945 阅读 · 7 评论 -
得到一个field在结构体(struct type)中的偏移量
宏定义:得到一个field在结构体(struct type)中的偏移量#define OFFSETOF(type, field) ((size_t)&(((type *)0)->field))(type *)0:把0地址当成type类型的指针。((type *)0)->field:对应域的变量。&((type *)0)->fiel转载 2012-10-20 00:39:54 · 3263 阅读 · 1 评论 -
C语言字节对齐
一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果转载 2012-10-20 00:47:42 · 813 阅读 · 0 评论