![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
liangkaiyang
这个作者很懒,什么都没留下…
展开
-
send,recv,sendto,recvfrom
send函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程序要发送数据的缓冲区;第三个参数指明实际要发送的数据的字节数;第四个参数一般置0。这里只描述同步Socket的s转载 2010-10-10 19:39:00 · 31929 阅读 · 7 评论 -
类成员函数与普通函数的区别
在默认情况下,C++类成员函数使用的函数调用约定是__thiscall,而普通函数使用的是__cdecl。__thiscall方式被使用时,调用者(caller)把this指针传递给ECX寄存器(当CPU是x86构架),然后从右向左把参数压入堆栈,函数结束时,由函数本身(被调用者,callee)清理堆栈;__cdecl方式,调用者从右向左把参数压入堆栈,函数结束时,由调用者清理堆栈。我们这里使用普通函数指针调用类成员函数,将会造成2个错误:1)this指针没有被调用者压入堆栈。 2)函数体内堆栈已经被清理,转载 2010-10-18 20:42:00 · 3352 阅读 · 0 评论 -
字节,千,兆,千兆
1GB=1024MB=1024*1024KB=1024*1024*1024B B=字节 K=千 M=兆 G=千兆 “理论这样算,但是现在硬盘厂商都是按照1G=1000M去算的,所以现在80G的硬盘在系统检测出来的大概都是76G多 计算机中: bit就是位,(就是二进制数中的一位)是最小的单位,8位表示一个字节。容量GB,MB,KB,B。B就是一个字节(八位)G,M,K表示吉,兆,千,他们之间是1024进位。也就是1GB=1024MB,1MB=1024KB,1KB=1024B。 个英文字母、半角标点符号占用一转载 2010-10-21 08:11:00 · 1802 阅读 · 0 评论 -
#ifndef #define #endif用法
头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的: #ifndef #define ...... #endif 在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文转载 2010-10-21 08:09:00 · 599 阅读 · 0 评论 -
C语言用结构体指针作函数参数
这种方式比用结构体变量作函数参数效率高,因为无需传递各个成员的值,只需传递一个地址,且函数中的结构体成员并不占据新的内存单元,而与主调函数中的成员共享存储单元。这种方式还可通过修改形参所指成员影响实参所对应的成员值。此外,还可将结构体数组作为函数参数;还可设计结构体指针型函数,即返回的地址是指向结构体类型数据的转载 2010-10-21 08:14:00 · 2291 阅读 · 1 评论 -
八大排序算法总结
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。要点:设立哨兵,作为临时存储和判断数组边界之用。实现:Void InsertSort(Node L[],int length){Int i,j;//分别为有序区和无序区指针for(i=1;i{j=i+1;if(L[j]{L[0]=L[j];//存储待排序元素While(L[0]{L[i+1]=L[i];//移动i--;//查找}L[i+1]=L[0转载 2010-10-21 08:28:00 · 614 阅读 · 0 评论 -
C/C++中的函数参数传递机制
一、 函数参数传递机制的基本理论 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。 值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量转载 2010-10-21 08:16:00 · 616 阅读 · 0 评论 -
sizeof struct 占内存大小问题
为了提高CPU的存储速度,VC对一些变量的起始地址做了“对齐”处理,在默认情况下,VC规定各成员变量存放的起始地址相对于结构体的起始地址的遍移量必须为该变量的类型所占用的字节数的陪数。各成员变量在存放的时候在结构中出现的顺序依次申请空间,同时按照上面对齐方式调整位置,空缺的字节VC会自动填充。同时VC为了确保结构的大小为结构的字节边界数(即该结构占用最大空间的类型所占用的字节数)的陪数,所以在为最后的一个成员变量申请空间后,还回根据需要自动填充空缺的字节。struct mystruct{ double转载 2010-11-05 20:13:00 · 673 阅读 · 0 评论