一 :关于指针和堆的内存分配先来介绍一下指针: 指针一种类型,理论上来说它包含其他变量的地址,因此有的书上也叫它:地址变量。既然指针是一个类型,是类型就有大小,在达内的服务器上或者普通的PC机 上,都是4个字节大小,里边只是存储了一个变量的地址而已。不管什么类型的指针,char * ,int * ,int (*) ,string * ,float * ,都是说明了本指针所指向的地址空间是什么类型而已,了解了这个基本上所有的问题都好象都变的合理了。在C++中,申请和释放堆中分配的存贮空间,分别使用new和delete的两个运算符来完成:指针类型 指针变量名 = new 指针类型 (初始化); . Read More
posted @ 2012-03-12 22:18 AlexShi Views(927) Comments(0) Diggs(1) Edit
1、指针函数: 指针函数是指带指针的函数,即本质是一个函数。我们知道函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。其定义格式如下所示: 返回类型标识符 *返回名称(形式参数表) { 函数体 } 返回类型可以是任何基本类型和复合类型。返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址... Read More
posted @ 2012-03-12 21:46 AlexShi Views(10980) Comments(0) Diggs(1) Edit
我们在浏览Linux内核源代码时,经常会碰到一些非常奇怪的代码记号。按照我们之前对C语言的一般掌握,这些代码记号通常都算不上是符合C语言语法的。那这是怎么回事呢?其实,这基本上是GNU C对 C语言标准的扩充,有了这些扩充,人们就可以更方便的开发,开发出的程序经过GCC编译后,也会产生更有效的二进制代码。 通常情况下,我们写C代码都不大会用到这些扩充,这只是因为很简单的原因,那就是我们还不知道它... Read More
posted @ 2012-03-11 00:30 AlexShi Views(581) Comments(0) Diggs(0) Edit
GCC 和 Linux 是出色的组合。尽管它们是独立的软件,但是 Linux 完全依靠 GCC 在新的体系结构上运行。Linux 还利用 GCC 中的特性(称为扩展)实现更多功能和优化。本文讨论一些重要的扩展,讲解如何在 Linux 内核中使用它们。 GCC 当前的稳定版本(版本 4.3.2)支持 C 标准的三个版本: International Organization for St... Read More
posted @ 2012-03-11 00:14 AlexShi Views(728) Comments(0) Diggs(0) Edit
void *memccpy (void *dest, const void *src, int c, size_t n); 从src所指向的对象复制n个字符到dest所指向的对象中。如果复制过程中遇到了字符c则停止复制,返回指针指向dest中字符c的下一个位置;否则返回NULL。 void *memcpy (void *dest, const void *src, size_t n); 从s... Read More
posted @ 2012-03-10 23:45 AlexShi Views(809) Comments(0) Diggs(0) Edit
在GNU C中,宏可以接受可变数目的参数,就象函数一样,例如: #define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt, ##arg) 用可变参数宏(variadic macros)传递可变参数表 你可能很熟悉在函数中使用可变参数表,如: void printf(const char* format, ...); 直到最近,可变参数表... Read More
posted @ 2012-03-09 23:23 AlexShi Views(61683) Comments(4) Diggs(4) Edit