C program
文章平均质量分 68
忧郁家的猫头鹰
这个作者很懒,什么都没留下…
展开
-
memset详解
原型: void *memset(void * s, int c, size_t n); memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。常见的三种错误第一: 搞反了c 和 n的位置. 一定要记住 如果要把一个char a[20]清零, 一定是 memset(a, 0, 20) 而不是 memset(a, 20, 0转载 2009-09-27 21:35:00 · 1031 阅读 · 0 评论 -
C语言复习笔记
#1 关于指针 int *ptr; //指向int类型变量的指针 char *ptr; //指向char类型变量的指针 int **ptr; //指向指向int类型变量的指针变量的指针 int *ptr[3]; //有三个指向int类型变量的指针的数组 int (*ptr)[3]; //指向含有三个int类型元素的数组的指针 int (*pfun)(int ,int);原创 2012-02-23 18:06:27 · 833 阅读 · 0 评论 -
关于内存对齐的小总结
对齐规则: 1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照 #pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。 2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构转载 2011-10-18 20:35:43 · 1255 阅读 · 2 评论 -
switch语句中case语句中变量初始化问题!
#includeint main(){ int i=1; switch(i) { case 1: int a=1; printf("%d/n",a); break; case 2: printf("不可能的结果"); break; default:break; } return 0;} 编译出现[Error] D:/文原创 2009-10-03 18:51:00 · 3451 阅读 · 2 评论 -
揭开Socket编程的面纱
对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:1. 什么是TCP/IP、UDP?2. Socket在哪里呢?3. Socket是什么呢?4. 你会使用它们吗?什么是TCP/IP、UDP? TCP/IP(Transmission Cont转载 2009-10-29 20:30:00 · 545 阅读 · 0 评论 -
什么情况下要ntohl?
然后htonl,htons,ntohs也介绍一下: 这个是对整数的保存需要不同的cpu在内存中保存整数的方式不一样有的是低位在前 如intel cpu有的是高位在前 如sun的 sparc使用char b[4];*(int*)b = 0x10203040;然后看b里面的内容 就知道是什么样保存的了 换句话说 如果你的整型(short ,int )变量可能传给另一台电脑 那就需要规定字节转载 2009-10-28 22:33:00 · 1207 阅读 · 0 评论 -
关于ULARGE_INTEGER的运算!
ULARGE_INTEGER Union The ULARGE_INTEGER structure is used to specify a 64-bit unsigned integer value. typedef union _ULARGE_INTEGER { struct { DWORD LowPart; DWORD HighPart; }; struct原创 2009-10-14 21:52:00 · 8073 阅读 · 3 评论 -
堆和堆栈的区别
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(s转载 2009-10-06 21:43:00 · 559 阅读 · 0 评论 -
宏定义与预定义
上学的时候就没搞清楚这两个东东的关系,原本以为是多么难得事情,今天仔细瞧瞧就那么回事。(浮躁的大学哦.....)宏定义:其作用就是“换其名曰”,给程序中的一段特殊的代码--函数,数据取了个简单明了的名字。不过有一点这家伙的作用范围是全局的。即使它是在某一个函数块中定义的。这个其实也容易理解。因为宏定义是预定义的一种,在我们的程序之前,由预编译器(Cpp)提前编译出来了,那个时候程序里的结构转载 2009-10-04 23:50:00 · 4312 阅读 · 0 评论 -
关于全局变量
全局变量、宏定义、头文件的灵活运用全局变量 以下是如何定义全局变量。众所周知,全局变量应该是得到内存分配且可以被其他模块通过C语言中extern关键字调用的变量。因此,必须在 .C 和 .H 文件中定义。这种重复的定义很容易导致错误。以下讨论的方法只需用在头文件中定义一次。虽然有点不易懂,但用户一旦掌握,使用起来却很灵活。表1.2中的定义出现在定义所有全局变量的.H头转载 2009-10-04 23:41:00 · 1062 阅读 · 0 评论 -
关于字符串与数字的转化(C语言)
字符串转化为数字面试例题3:使用库函数将字符串转换为数字。考点:C库函数中字符串转换为数字的使用。出现频率:★★★★解析与上节数字转换为字符串类似,C/C++语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。以下列举了各函数的方法及其说明。atof():将字符串转换为双精度浮点型值。atoi():将字符串转换为整型值。atol():将字转载 2009-10-05 16:46:00 · 3658 阅读 · 0 评论 -
exit()函数详解和Exit() 和 Return() 的差别
exit(0) 表示程式正常, exit(1)/exit(-1)表示程式异常退出exit() 结束当前进程/当前程式/,在整个程式中,只要调用 exit ,就结束return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值.. exit(1)表示进程正常退出. 返回转载 2009-09-29 21:47:00 · 807 阅读 · 0 评论 -
使用指针做函数返回值和指针(栈内存与堆内存的函数形式使用)
一、使用指针做函数返回值: 1、当使用指针做为函数的返回值时,主函数处的char *p;将获得调用函数char *pf;的值,即一个地址值,如oxAE72。此时需要我们注意的是该地址值所指向的空间是否存在(即已向操作系统声明注册,不会被释放,即可能被其他操作修改); 2、使用栈内存返回指针是明显错误的,因为栈内存将在调用结束后自动释放,从而主函数使用该地址空间将很危险。 例原创 2009-09-28 22:03:00 · 1055 阅读 · 0 评论 -
一个通用链表的简单实现
最近在CSDN上看到了absurd大神的几篇关于系统程序员成长计划的的博文里面提到了关于通用链表实现的思想,虽然数据结构学的还行,但是真的没写过通用的链表,对封装的认识比较浅显!于是乎决定实现一下,真正开始写才发现,对我这么个眼高手低的菜鸟来说挺有难度的。写篇博文记录下。整体实现的主题思想还是absurd大神博文中的两个重要思想:1, 链表数据段存指针void*原创 2011-09-29 23:01:59 · 5433 阅读 · 0 评论