上一页 1 2 3 4 5 6 7 8 9 10 ··· 12 下一页
  2012年12月15日
摘要: Ctrl+1快速修复(最经典的快捷键,就不用多说了)Ctrl+D:删除当前行Ctrl+Alt+↓复制当前行到下一行(复制增加)Ctrl+Alt+↑复制当前行到上一行(复制增加)Alt+↓当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑当前行和上面一行交互位置(同上)Alt+←前一个编辑的页面Alt+→下一个编辑的页面(当然是针对上面那条来说了)Alt+Enter显示当前选择资源(工程,or文件or文件)的属性Shift+Enter在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)Shift+Ctrl+Enter在当前行插入空行(原理同上条)Ctrl 阅读全文
posted @ 2012-12-15 23:29 Daniel.G 阅读(164) 评论(0) 推荐(0) 编辑
  2012年12月2日
摘要: 活动记录 一个过程的一次执行所需信息的管理,是通过使用一个所谓活动记录的连续存储块来实现的。在PASCAL和C语言中,我们通常采用以过程为单位的动态存储分配方案。即:当一个过程被调用时,就把它的活动记录推入运行时存储栈的栈顶,而在控制返回调用程序时,再从栈顶弹出相应的活动记录。活动记录中各种域的作用 如下: (1) 临时变量域——用来存放目标程序临时变量的值,如计算表达式时所产生的结果; (2) 局部数据域——用来存放过程本次执行中的局部数据、简单变量以及数组内情向量等; (3) 机器状态域——用来保存在调用一个过程之前有关机器状态的信息,其中包括各种寄存器的当前值和返回地址等; ... 阅读全文
posted @ 2012-12-02 21:38 Daniel.G 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 数调用约定的含义 当一个函数被调用时,函数的参数会被传递给被调用的函数和返回值会被返回给调用函数。函数的调用约定就是描述参数是怎么传递和由谁平衡堆栈的,当然还有返回值。函数调用约定的几种类型 __stdcall,__cdecl,__fastcall,__thiscall,__nakedcall,__pascal函数调用约定的主要约束事件一、参数传递顺序 1.从右到左依次入栈:__stdcall,__cdecl,__thiscall 2.从左到右依次入栈:__pascal,__fastcall二、调用堆栈清理 1.调用者清除栈。 2.被调用函数返回后清除栈。三、函数调用约定的使用 ... 阅读全文
posted @ 2012-12-02 21:30 Daniel.G 阅读(184) 评论(0) 推荐(0) 编辑
摘要: *struct中的每个域在内存中都独立分配空间 *union只分配最大域的空间,所有域共享这个空间#include <stdio.h>struct A{ int a; int b; int c;};union B{ int a; int b; int c;};int main(){ printf("%d\n", sizeof(struct A)); //12 printf("%d\n", sizeof(union B)); //4 return 0;}union的使用受系统大小端的影响union C{ int i; ... 阅读全文
posted @ 2012-12-02 18:54 Daniel.G 阅读(800) 评论(0) 推荐(1) 编辑
摘要: 柔性数组* 柔性数组即数组大小待定的数组* C语言中结构体的最后一个元素可以是大小未知的数组* C语言中可以由结构体产生柔性数组#include <stdio.h>#include <malloc.h>typedef struct _soft_array{ int len; int array[];}SoftArray;int main(){ int i = 0; SoftArray* sa = (SoftArray*)malloc(sizeof(SoftArray) + sizeof(int) * 10); sa->len = 10; ... 阅读全文
posted @ 2012-12-02 18:23 Daniel.G 阅读(6905) 评论(1) 推荐(2) 编辑
摘要: 程序中的顺序点* 程序中存在一定的顺序点* 顺序点指的是执行过程中修改变量值的最晚时刻* 在程序达到顺序点的时候,之前所做的一切操作必须反映到后续的访问中c语言中的顺序点1 每个完整表达式结束时2 &&, ||, ?:,以及逗号表达式的每个运算对象计算之后3 函数调用中对所有实际参数的求值完成之后(进入函数体之前)/* 1&2*/#include <stdio.h>int main(){ int k = 2; int a = 1; k = k++ + k++; printf("k = %d\n", k); //6 ... 阅读全文
posted @ 2012-12-02 17:22 Daniel.G 阅读(348) 评论(0) 推荐(0) 编辑
  2012年12月1日
摘要: 分层网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统,如图1所示。图1 TCP/IP协议族的四个层次每一层负责不同的功能:1) 链路层, 有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。2) 网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括I P协议(网际协议) ,ICMP协议(Internet互联网控制报文协议) ,. 阅读全文
posted @ 2012-12-01 12:45 Daniel.G 阅读(6800) 评论(0) 推荐(1) 编辑
摘要: malloc和freemalloc所分配的是一块连续的内存,以字节为单位,并且不带任何的类型信息free用于将动态内存归还系统void* malloc(size_t size);void free(void* pointer);注意: malloc实际分配的内存可能会比请求的稍微多一点,但是不能依赖于编译器的这个行为 当请求的动态内存无法满足时malloc返回NULL 当free的参数为NULL时,函数直接返回calloc和reallocvoid* calloc(size_t num, size_t size);void* realloc(void* pointer, size_t new_s 阅读全文
posted @ 2012-12-01 00:19 Daniel.G 阅读(236) 评论(0) 推荐(0) 编辑
  2012年11月30日
摘要: 右左法则(指针阅读技巧解析)1. 从最里层的圆括号中未定义的标示符看起2. 首先往右看,再往左看3. 当遇到圆括号或者方括号时可以确定部分类型,并调转方向4. 重复2,3步骤,直到阅读结束 int (*p)(int*, int (*f)(int*));==>>p是一个指针,指向一个含有两个参数的函数,函数返回值为int。参数(int (*f)(int*)) f为一个指针,指向一个函数,函数参数为int*,函数返回值为int。 int (*p[5])(int*);==>>p是一个数组,数组中存放指针,指针指向参数为int*返回值为int的函数 int (*(*p)[5]) 阅读全文
posted @ 2012-11-30 17:43 Daniel.G 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 数组指针和指针数组数组指针本质上是一个指针;数组指针指向的值是数组的地址type(*p)[n]指针数组本质上是一个数组;指针数组中每个元素的类型是指针type* a[n] 阅读全文
posted @ 2012-11-30 10:28 Daniel.G 阅读(182) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 12 下一页