- 博客(26)
- 资源 (12)
- 收藏
- 关注
转载 lseek及llseek介绍
lseek在manpage中的相关说明:名称 lseek - 重新定位读/写文件偏移量内容简介 #include #include off_t lseek(int fd, off_t offset, int whence);描述 使用lseek()函数根据whence及offset两个参
2015-03-27 11:31:31 1127
原创 fseek函数
int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。实验得出,超出文件末尾位置
2015-03-27 11:24:31 517
转载 GCC在C语言中内嵌汇编 asm __volatile__
在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。1、简单的内嵌汇编例: __asm__ __volatile__("hlt"); "__asm__"表示后面的代码为内嵌汇编,"
2015-03-24 20:29:29 391
转载 gcc下__attribute__ ((constructor))和__attribute__ ((destructor))的使用
gcc下__attribute__ ((constructor))和__attribute__ ((destructor))的使用__attribute__ ((constructor))指定的函数在共享库loading的时候调用,__attribute__ ((destructor))指定的函数在共享库unloading的时候调用。 1. 编写源码文件ktest.
2015-03-24 20:02:48 400
转载 如何在main函数前后执行代码
第一次遇到这个问题的时候,第一反应是我没听错吧,然后默默在心里把面试官骂了N遍。对于C++来说,全局变量、静态变量的初始化是在main函数前执行的,这样就可以在构造函数里面运行一些东西。另外,今天再介绍几个底层玩法。直接上代码(以C语言为例,保存为demo.c):#include __attribute__((constructor)) int demo_construct
2015-03-24 18:40:47 524
转载 20个 Unix/Linux 命令技巧
让我们用这些Unix/Linux命令技巧开启新的一年,提高在终端下的生产力。我已经找了很久了,现在就与你们分享。删除一个大文件我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入:> /path/to/file.log# 或使用如下格式: > /path/to/file.lo
2015-03-24 14:49:38 314
转载 malloc和free函数详解
本文介绍malloc和free函数的内容。 在C中,对内存的管理是相当重要。下面开始介绍这两个函数: 一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。
2015-03-24 10:56:36 283
转载 如何在C++中调用C程序?
C++和C是两种完全不同的编译链接处理方式,如果直接在C++里面调用C函数,会找不到函数体,报链接错误。要解决这个问题,就要在 C++文件里面显示声明一下哪些函数是C写的,要用C的方式来处理。1.引用头文件前需要加上 extern “C”,如果引用多个,那么就如下所示extern “C”{#include “ s.h”#include “t.h”#include “g.h”
2015-03-22 22:46:22 271
转载 warning C4047: '=' : 'int *' differs in levels of indirection from 'int (*)[3]'
#include void main(){ int *p; int i,j; int a[3][3]={{0,1,2},{3,4,5},{6,7,8}}; p=a;//编译时在此处会报标题中的警告,想知道具体是什么原因?求高人指教! for(i=0;i<3;i++) { for( j=0;j<3;j++) { printf("%d\n",*p
2015-03-20 10:56:11 15077
转载 一道试题引发的血案 int *ptr2=(int *)((int)a+1)
某日,看到一道比较恶心的C语言的试题,考了很多比较绕的知识点,嘴脸如下: int main(void){ int a[4] = {1, 2, 3, 4}; int *ptr1=(int *)(&a+1); int *ptr2=(int *)((int)a+1); printf("%x, %x/n", ptr1[-1
2015-03-16 10:14:31 437
转载 位域
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个类型单元中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以达到压缩数据的目的。位域定义
2015-03-16 09:05:24 274
转载 C 位域
以下测试均在vc6.0下进行,其中char 占一个字节, shortint占两个字节, int 占四个字节, long int 占四个字节.有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划
2015-03-16 08:52:10 255
转载 C结构体之位域(位段)
C结构体之位域(位段)有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。
2015-03-15 21:01:16 272
转载 理解一般指针和指向指针的指针
在说指向指针的指针之前,不得不说指向变量的指针。先看如下示例:1. 指向整型指针先看如下示例: 1 #include iostream> 2 using namespace std; 3 4 int main() 5 { 6 int a = 5; 7 int * p = &a; 8 cout "a = "
2015-03-12 21:06:53 251
转载 fcntl.h与unistd.h
fcntl.h与unistd.hfcntl.h定义了很多宏和open,fcntl函数原型unistd.h定义了更多的函数原型close(关闭文件)表头文件#include定义函数int close(int fd);函数说明当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源。参
2015-03-09 09:30:43 474
转载 头文件sys/types.h <sys/stat.h>
头文件一般位于usr/include目录下,各个子类的头文件位于include子目录下不知道某个“库函数”需要哪些头文件,使用“man 函数”即可查看在应用程序源文件中包含 以访问 _LP64 和 _ILP32 的定义。此头文件还包含适当时应使用的多个基本派生类型。尤其是以下类型更为重要:clock_t 表示系统时间(以时钟周期为单位)。dev_t 用于设备号。off_t
2015-03-09 09:23:39 9311
转载 #include <sys/types.h>的作用
#include 的作用#include 基本系统数据类型是Unix/Linux系统的基本系统数据类型的头文件,含有size_t,time_t,pid_t等类型。NAME sys/types.h - data typesSYNOPSIS #include DESCRIPTION The h
2015-03-08 22:29:43 5519
转载 C语言深入学习系列
用C语言写程序时需要知道是大端模式还是小端模式。 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。 为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是
2015-03-08 16:51:09 553
转载 C语言字节对齐
一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果
2015-03-08 15:57:46 263
转载 C语言的字节对齐及#pragma pack的使用
C编译器的缺省字节对齐方式(自然对界)在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储(成员之间可能有插入的空字节),第一个成员的地址和整个结构的地址相同。 C编译器缺省的结构成员自然对界条件为“N字节对齐”,N即该成员数据类型的长
2015-03-08 15:56:51 554
转载 C语言字节对齐详解
一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些
2015-03-08 15:54:25 236
转载 内存对界原理
1. 内存对界原理在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。例如:1
2015-03-06 21:27:30 336
转载 sizeof()用法汇总
sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作 指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为
2015-03-06 21:18:29 366
转载 0, \0, NULL的区别
这个都知道在哪里用,但是道理不清楚。然后google 了一下,一个比较好的解释虽然是英文,但是很经典。1.0 is an integer constant2.'\0' is a character constant3.NULL is a macro(宏) defined in several standard headers(标准头文件)4.nul is
2015-03-06 21:00:51 254
转载 strlen和sizeof的区别
一、sizeof sizeof(...)是运算符,而不是一个函数。 一个简单的例子:int a;cout 在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的
2015-03-06 20:51:02 223
转载 Linux下多进程编程之exec函数语法及使用实例
exec函数族 1)exec函数族说明 fork()函数用于创建一个子进程,该子进程几乎复制了父进程的全部内容,但是,这个新创建的进程如何执行呢?exec函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。另外,这里
2015-03-02 09:36:17 827
oxygen xml editor 17.0.7z keygen
2015-07-29
java基础教程_Java快车
2015-07-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人