c语言
IT熱血青年
这个作者很懒,什么都没留下…
展开
-
位操作与位字段
位操作1 掩码:设定某位为开,某位为关#define MASK 00000010MASK 哪位为1,哪个位就起以下作用flags &= MASK;把0看作不透明,把1看做透明MASK 00000010flag 10010110flags &= MASK10010110 000000102 打开位flags |=转载 2013-04-12 12:46:03 · 479 阅读 · 0 评论 -
break语句
break语句break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch 中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语转载 2013-09-24 22:47:40 · 553 阅读 · 0 评论 -
c++ 引用
在编写个人函数的时候,你将会受到C++中的一条基本的原则的限制:在默认的情况下,变量只能以值传递的方式传递给函数。这句话的意思是:被传递到函数的只是变量的值,永远不是变量的本身。例如:void changeVar(int myVar,int newValue) { myVar=newValue; } int mai转载 2013-10-12 16:05:39 · 374 阅读 · 0 评论 -
c 与 c++ 的区别
1、c没有引用类型2、c 的strcut 不同原创 2013-10-12 19:00:58 · 547 阅读 · 0 评论 -
c语言将一个string 数字转成 int 数字
atoi目 录1简介1.1 C语言库函数名1.2 功 能:1.3 名字来源:1.4 原型:1.5 UNICODE2函数说明1简介C语言库函数名atoi功 能:把字符串转换成整型数。名字来源:ASCII to integer 的缩写。转载 2013-10-12 19:01:30 · 8897 阅读 · 0 评论 -
C语言编程需要注意的64位和32机器的区别
一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:16位平台char 1个字节8位short 2个字节16位int 2个字节16位long 4个字节32位指针 2个字节32位平台转载 2013-10-23 16:10:42 · 499 阅读 · 0 评论 -
problem set
1、调用malloc函数的时候好像一般都会在加上强制类型转换如(char *)malloc();不加强制类型转换有什么影响Malloc向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。转载 2013-10-23 20:27:05 · 567 阅读 · 0 评论 -
结构体的内存分配
假设这台机器 sizeof(char) = 1 sizeof(int) = 4 sizeof(double) = 8枚举类型只为最宽的数据分配内存,在不同是时候,用的是同一块内存;在默认情况下,VC规定各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。下面列出常用类型的对齐方式(vc6.0,32位系统)。类型 对齐方式转载 2013-10-23 20:33:16 · 463 阅读 · 0 评论 -
结构体对其问题
结构体成员的内存分布与对齐我们先看一道IBM和微软的笔试题:IBM笔试题:struct{ short a1;short a2; short a3; }A; struct{ long a1; short a2; }B; sizeof( A)=6, sizeof(B)=8,为什么? 注:转载 2013-10-23 22:10:23 · 644 阅读 · 0 评论 -
intptr_t 其实不是指针类型
http://blog.csdn.net/moonvs2010/article/details/7490420 最近在看nginx源码,看到有一个类型intptr_t,没有见过,google了一下,有人说是指针类型,但是看nginx源码中对该类型变量的使用,好像不是指针类型。[cpp] view plaincopys转载 2013-10-23 16:29:39 · 589 阅读 · 0 评论 -
socket结构和IP地址形式间转换的总结
sockaddr 、sockaddr_in 、addrinfo比较 struct sockaddr { unsigned short sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 bytes of protocol address转载 2014-02-21 13:02:04 · 652 阅读 · 0 评论 -
struct多种声明定义写法的小结
struct多种声明定义写法的小结详细讲解struct这个容易混淆的写法的书是有的,《C专家编程》中就有详细的描述。可惜大家喜欢问问题有甚于喜欢看书,于是BBS上泛滥着前人早已经解决、说明清楚的问题。哎,中国勤学好问者的悲哀。这里简要说明一下struct,为大家省钱。/* struct.c* 本程序演示了struct的种种写法。注意,所有这些写法都能编译通过* author:转载 2014-02-19 15:17:27 · 822 阅读 · 0 评论 -
socket 中send 和recev函数详解
int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;转载 2014-02-19 16:52:43 · 2081 阅读 · 0 评论 -
socket网络编程中read与recv区别
1、read 与 recv 区别read 原则: 数据在不超过指定的长度的时候有多少读多少,没有数据则会一直等待。所以一般情况下:我们读取数据都需要采用循环读的方式读取数据,因为一次read 完毕不能保证读到我们需要长度的数据,read 完一次需要判断读到的数据长度再决定是否还需要再次读取。recv 原则: recv 中有一个MSG_WA转载 2014-02-19 17:08:47 · 688 阅读 · 0 评论 -
C语言变量声明内存分配(转)
一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。2、堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全转载 2013-10-10 11:35:36 · 552 阅读 · 0 评论 -
使用参数的宏定义
#define SQUARE(x) x*xz=SQUARE(2); //Z=4#define PSQR(X) printf("The square of X is %d.\n", (X*X));PSQR(2);The square of X is 4转载 2013-04-12 12:49:51 · 605 阅读 · 0 评论 -
函数指针 指针函数
指针函数不同于函数指针, int (*f)(int a);或者char (*f1)(void);函数指针声明为指针,它与变量指针不同之处是,它不是指向变量,而是指向函数。函数指针有两个用途:调用函数和做函数的参数.类型名 *函数名(函数参数表列);其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指转载 2013-09-08 15:09:35 · 432 阅读 · 0 评论 -
strcpy memcpy
1.source和destin所指的内存区域可以重叠,但是如果source和destin所指的内存区域重叠,那么这个函数并不能够确保source所在重叠区域在拷贝之前被覆盖。而使用memmove可以用来处理重叠区域。函数返回指向destin的指针。2.strcpy和memcpy主要有以下3方面的区别。2.1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容转载 2013-09-08 15:32:58 · 415 阅读 · 0 评论 -
将“引用”作为函数返回值类型
将“引用”作为函数返回值类型格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error!注意事项:(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的转载 2013-09-10 23:32:16 · 857 阅读 · 0 评论 -
返回指针的函数
ljtwkxz三级|我的知道|手机知道|私信|百度首页新闻网页贴吧知道音乐图片视频地图百科文库经验提问函数返回指针2011-10-09 13:26天成天下 | 分类:C/C++ | 浏览4568次我有一个程序是这样的转载 2013-09-10 21:16:31 · 667 阅读 · 0 评论 -
system call
系统调用百科名片由操作系统实现的所有系统调用所构成的集合即程序接口或应用编程接口(Application Programming Interface,API)。是应用程序同系统之间的接口。目录系统调用简介进程控制文件系统控制系统控制内存管理网络管理socket控制展开系统调用简介转载 2013-09-13 17:47:36 · 1072 阅读 · 0 评论 -
堆栈
栈(操作系统):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被转载 2013-09-13 18:29:46 · 414 阅读 · 0 评论 -
细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
一.函数介绍:1、memcpy函数原型:extern void *memcpy(void *dest, const void *src, size_t count);用法:#include功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。注意:和strcpy相比,memcpy不是遇到转载 2013-09-15 01:24:33 · 703 阅读 · 0 评论 -
局部变量返回
函数调用结束之后,如果有返回值的话,就会把返回值压栈的,这样当返回到当初调用函数的地方的时候,就可以从栈中取出函数的返回值了。在func()函数中,在返回的时候,会生成一个临时变量,当然这个临时变量的值等于temp,然后把这个临时变量压栈。而这时temp和其他局部参数(如果有的话)都会被销毁,因为它们在函数返回之后已经没有任何作用了。所以,可以看出返回值与函数参数和函数内的局部参数是不同的转载 2013-09-14 17:30:44 · 573 阅读 · 0 评论 -
字符串与指针,数组名
字符串与指针1、 字符串的表示形式在C语言中,我们可以用两种方式访问字符串(1) 用字符数组存放一个字符串,然后输出该字符串。main(){ char string[]="I love China!"; printf("%s\n", string);}(2) 用字符指针指向一个字符串。可以不定义字符数转载 2013-09-19 12:28:18 · 696 阅读 · 0 评论 -
二维数组的动态分配及参数传递
1. C语言动态分配二维数组(1)已知第二维Code-1char (*a)[N];//指向数组的指针a = (char (*)[N])malloc(sizeof(char *) * m);printf("%d\n", sizeof(a));//4,指针printf("%d\n", sizeof(a[0]));//N,一维数组fre转载 2013-09-24 09:27:20 · 624 阅读 · 0 评论 -
strspn vs strcspn
1、strcspn头文件:#inclued定义函数:size_t strcspn(const char *s, const char * reject);函数说明:strcspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全不在参数reject 所指的字符串中. 简单地说, 若strcspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都不含字转载 2013-09-24 10:24:30 · 529 阅读 · 0 评论 -
strspn vs strcspn
1、strcspn头文件:#inclued定义函数:size_t strcspn(const char *s, const char * reject);函数说明:strcspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全不在参数reject 所指的字符串中. 简单地说, 若strcspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都不含字转载 2013-09-24 10:24:54 · 445 阅读 · 0 评论 -
printf、sprintf与fprintf 的用法区分
printf、sprintf与fprintf 的用法区分1: fprintf()#include int fprintf( FILE *stream, const char *format, ... );fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fprintf()可以使得信息输出到指定的文件.比如转载 2013-10-10 08:46:54 · 614 阅读 · 0 评论 -
socket中read、write、send、recv函数的比较
建立好了TCP连接之后,我们就可以把得到的套接字当做文件描述符来使用,由此,想到了网络程序里面的基本的读写函数read和write函数。Write函数 Ssize_t write(int fd,const void *buf,size_t nbytes); Write函数将buf中的nbytes字节内容写入到文件描述符中,成功返回写的字节数,失败返回-1.并设置errno变转载 2014-02-19 17:09:40 · 584 阅读 · 0 评论