cedel:c declare(c调用约定)的缩写,是c和c++程序的缺省调用方式,规则是,从又向左的顺序压参数入,
由调用者把参数弹出栈,对于传入参数的内存栈是由调用者来维护的,正因为如此,只有这种调用方式可以实现个数不定的入口参数(可变参数)。stdcall:是pascal程序的缺省调用方式,规则是,按从右向左的顺序入栈,被调用的函数在返回前清理传送参数的内存栈。上两者的主要区别是前者由调用者清理栈,后者由被调用的函数清理栈。当然函数名的修饰部分也是不同的。fastcall:采用寄存器传递参数,特点就是快了。1. 实模式,又叫实地址模式,CPU完全按照8086的实际寻址方法访问从00000h--FFFFFh(1MB大小)的地址范围的内存,在这种模式下, CPU只能做单任务运行;寻址公式为:物理地址=左移4位的段地址+偏移地址,即:物理地址是由16位的段地址和16位的段内偏移地址组成的。2. 保护模式,又叫内存保护模式,寻址采用32位段和偏移量,最大寻址空间4GB,在这种模式下,系统运行于多任务,设计这种模式的原因和好处是:保护模式增加了寻址空间,增加了对多任务的支持,增加了段页式寻址机制的内存管理(分段机制使得段具有访问权限和特权级,各应用程序和操作系统的代码和核心是被保护的,这也是多任务支持的实现关键和保护这个名字的由来)。寻址过程为:物理地址=由段地址查询全局描述符表中给出的段基址+偏移地址,即:物理地址由影像寄存器中的基址加上16位或者32位的偏移组成。//统计字符串字母个数int bIsWord=0;int nCount=0;for(int i=0;i<sizeof(str);i++){ if((str[i]>='A' && str[i]<='Z') || (str[i]>='a' && str[i]<='z')) { if(!bIsWord) nCount++; bIsWord=1; } else { bIsWord=0; }}printf("%d",nCount);---strcpy函数#include <assert.h>#include <stdio.h>char*strcpy(char*strDest, constchar*strSrc){ assert((strDest!=NULL) && (strSrc !=NULL)); // 2分char* address = strDest; // 2分while( (*strDest++=*strSrc++) !='\0' ) // 2分NULL;return address ; // 2分}---strlen函数#include<stdio.h>#include<assert.h>int strlen( constchar*str ) // 输入参数const{ assert( str != NULL ); // 断言字符串地址非0int len = 0;while( (*str++) !='\0' ){ len++;}return len;}//冒泡排序void BubbleSort( int *arr, int n ){ int i, j, flag = 1; // i,j控制循环,flag是个标志 int temp(0); for( i=1; i<n && flag==1; i++ ) // 进行n-1次循环 { flag = 0; // 每次开始flag置零 for( j=0; j<n-i; j++ ) { // 如果前一个数比后一个数大,交换位置 if ( arr[j] > arr[j+1] ) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; flag = 1; //如果有数据交换,则flag为1 } } }}-------------------------------------八皇后---------------------------------------------------#include <stdio.h>#include <stdlib.h>#define N 8int column[N+1]; // 同栏是否有皇后,1表示有int rup[2*N+1]; // 右上至左下是否有皇后int lup[2*N+1]; // 左上至右下是否有皇后int queen[N+1] = {0};int num; // 解答编号void backtrack(int); // 递回求解int main(void) { int i; num = 0; for(i = 1; i <= N; i++) column[i] = 1; for(i = 1; i <= 2*N; i++) rup[i] = lup[i] = 1; backtrack(1); system("pause"); return 0;}void showAnswer() { int x, y; printf("\n解答 %d\n", ++num); for(y = 1; y <= N; y++) { for(x = 1; x <= N; x++) { if(queen[y] == x) { printf(" Q"); } else { printf(" ."); } } printf("\n"); }}void backtrack(int i) { int j; if(i > N) { showAnswer(); } else { for(j = 1; j <= N; j++) { if(column[j] == 1 && rup[i+j] == 1 && lup[i-j+N] == 1) { queen[i] = j; // 设定为占用 column[j] = rup[i+j] = lup[i-j+N] = 0; backtrack(i+1); column[j] = rup[i+j] = lup[i-j+N] = 1; } } }}--------------------------------------------------------------------------------------------------------