小甲鱼学完的c语言笔记_第1页
小甲鱼学完的c语言笔记_第2页
小甲鱼学完的c语言笔记_第3页
小甲鱼学完的c语言笔记_第4页
小甲鱼学完的c语言笔记_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上 目录 (ctrl 加 鼠标点击)1、 2、3、 4、5、 6、7、 8、9、 10、11、 12、13、 14、15、 16、&& 与 如果两个的返回值都是真,那么这个的返回值才为真| 或 如果两个的返回值都是真,那么这个的返回值才为真! 非printf("%d %s %c %c %d n")相当于:printf("%-5d%-5s%-4c%-8c%-8sn")(数字代表空格数)15、辅助框架:#include <stdio.h>#include <windows.h>#define l

2、pBaseAddress 0x/地址常量void main()while(1)char x;HANDLE hProcess;/句柄DWORD lpBuffer;/写入的值DWORD res;/写内存的返回值,判断是否成功DWORD pid;/PIDHWND hWnd;/窗口句柄printf("E键退出nR键修改n");x=getchar();if(x='e'|x='E')break;elsehWnd=FindWindow(NULL,"444");printf("hWnd:%dn",hWnd);GetWi

3、ndowThreadProcessId(hWnd,&pid);printf("PID:%dn",pid);hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pid);printf("hProcess:%dn",hProcess);printf("修改多少?n");scanf("%ld",&lpBuffer);lpBuffer=lpBuffer-10;res=WriteProcessMemory(hProcess,lpBaseAddress,&

4、;lpBuffer,4,0);(res=0)?printf("失败n"):printf("成功n");/*WriteProcessMemory( HANDLE hProcess, LPVOID lpBaseAddress, LPVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesWritten return res);/*FindWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName ); *GetWindowThreadProcessId( HWND hWnd

5、, LPDWORD lpdwProcessId );*OpenProcess( DWORD fdwAccess, BOOL fInherit, DWORD IDProcess);*/取句柄:hProcess=Findwindow(NULL,/窗口名称)取PID:HWND hWnd;DWORD Pid; GetWindowThreadProcessId(hWnd,&Pid);读内存:Readprocessmemory hProcess in远程进程句柄。 被读取者/取句柄pvAddressRemote in远程进程中。 从具体何处读取/基址加偏移pvBufferLocal out本地进程

6、中内存地址. 函数将读取的内容写入此处/变量dwSize in要传送的字节的长度pdwNumBytesRead out实际传送的字节数./变量读到的=Readprocessmemory(hProcess,0xFFFFFFFF,缓冲区,4,0)写内存:WriteProcessMemoryhProcess int 进程句柄lpBaseAddress int 内存地址lpBuffer int 指向要写的数据的nSize int 要写入的字节数WriteProcessMemory(hProcess,0xFFFFFFFF,缓冲区(写入的值),4,0)关闭句柄:CloseHandle(hProcess)1

7、、信息框:#include<windows.h>MessageBox(0,"hh"/内容,"hh"/标题,MB_OK/确定键) api: .DLL命令 API_MessageBox, 整数型, "user32", "MessageBoxA", 建立消息框窗体 .参数 1, 整数型,0 , .参数 2, 文本型, “内容”, .参数 3, 文本型, “标题”, .参数 4, 整数型, MB_OK/即确定键, 2、辅助网上写法: 3、命令While 循环命令while()循环括号里只有2种值,0和非0,0表

8、示假,非0表示真(即1)。真就进入循环,假就离开循环。这里1就表示永真,直到循环体内遇到break。a=0While(1)/表示真 a=a+1; If (a=4)/假如 break;/跳出循环 && 与 如果两个的返回值都是真,那么这个的返回值才为真| 或 如果两个的返回值都是真,那么这个的返回值才为真! 非If的三种形式: 第一种形式为: if(a>b)/如果真(返回值) a=a+1; b=b+1; A=a+2; B=b+2; /*如果返回值为真,那么 a=a+1;b=b+1;A=a+2;B=b+2。, 否则跳过,直接执行A=a+2;B=b+2。 相当于如果真()*/第

9、二种形式为:If(a>b)/如果(返回值)A=a+1;B=b+1;Else /那么;否则A=a+2;B=b+2; /*如果a>b,那么A=a+1;B=b+1; 否则A=a+2;B=b+2; 相当于如果()*/第三种为: c语言代码 易语言代码 流程图/*相当于得到某数值之后,然后寻找匹配的项目*/-注意:if(a=1)中“=”为等号, 若写成“=”则为赋值,返回值无论如何都是1。应写为“=” 要避免,最好写为1=a,这样写如果写错编译会报错。Scanf()用scanf("%d,%d",&a,&b);的时候。输入的时候输入两个数,中间还要用逗号隔开

10、的,否则会出错。用scanf("%d%d",&a,&b);的时候,输入两个数的时候,不用输入逗号。可以用空格隔开。相当于监视热键()中的得到热键代码。注意:&不能丢。scanf意思是从键盘输入数据,从键盘得到字符,放到某个变量里,当然要它的地址了;printf意思是输入某个变量的内容,只要知道变量名就行了。#include <stdio.h>#include<windows.h>void main()char a,b;scanf("%c,%c",&a,&b);printf("%c,

11、%cn",a,b);Scanf可以得到整形,如: int a;scanf("%d",&a);/输入2015a=2015;X=Getchar() 取得字符,赋值给x,即把键盘上打的键的代码给x(之前要char x)若按下a键,那么x中的键码为a#include <stdio.h>#include<windows.h>void main()char a,b;a=getchar();b='z'printf("%c,%cn",a,b);自增自减符:自增自减符的两种形式平时一样,但在判断真假时用法不同,并且

12、在运算时也不同,如下图:Putchar 输出单个字符Ifelse可以写成条件表达式:If (a>b)max=1;elsemax=2; 等于 max=(a>b)?1:2;switch语句#include <stdio.h>void main()int a;printf("input integer numbers: "); /打印scanf("%d",&a); /相当于监视热键()switch(a) /相当于标签响应事件的参数一的判断 /各个分支,若输入1则执行分支1,casecase 1:printf("周1n&

13、quot;);break; 后只能为整型,可以跟表达式,但结果为整形case 2:printf("周2n");break; /break跳出循环case 3:printf("周3n");break;case 4:printf("周4n");break;case 5:printf("周5n");break;case 6:printf("周6n");break;case 7:printf("周7n");break;default:printf("errorn"

14、);break 跳出循环8、循环结构<1>goto语句#include <stdio.h>void main()int a;a=1;xx:if (a<50)a=a*2+10;printf("%dn",a);goto xx; printf("%dn",a);其中,xx为标识符。<2>while语句#include <stdio.h>void main()int a=1,b=0;while(a<=100)b=a+b;a+; printf("%dn",b);<3>、do

15、while语句:与while完全相同,就是先把代码完成,在判断。Dowhile();#include <stdio.h>void main()int a=1,b=0;dob=a+b;a+;while(a<=100);printf("%dn",b);For语句:for(变量最初的值;循环条件;变量递增或改变) 代码;如:#include <stdio.h>void main()int a,b;for (a=1,b=0;a<=100;a+)b=b+a;printf("%dn",b); /求1加到100,最后输出5050.其

16、中,参数1可以省略,但要在之前赋值。其中,参数2不能省略。其中,参数3可以省略,但要在循环中写出。int a=1,b=0;for (/*参数1*/;a<=100;/*参数3*/)b=b+a; a+;For循环的嵌套:#include <stdio.h>void main()int a,b;for (a=1;a<7;a+)printf("n");for(b=1;b<=a;b+)putchar('*'); printf("n");Break与continue的区别Break直接跳出整个循环(1个),continu

17、e本次循环continue后的代码,但仍然循环。Getch 相当于停止,按随意键后继续 头文件 <conio.h> 字符输入函数,得到字符后传给一个变量。如:a=getch(),可能 与getchar()相同。9、 数组定义数组: int a10; /定义一个数组a,有10个元素。 Int a5,b,c,d6; /可以同时定义多个同类型的数组。数组是从0下标开始,如 int a3;则元素为a0、a1、a2 数组的赋值:初始化全部赋值:int a3=5,9,7; /在定义的时候赋值初始化部分赋值:int a3=5,9; /那么 a0=5; a1=9; a2=0;(即未赋值)单个赋值:

18、int a3; a0=5; a1=9; a2=7;二位数组:动态数组:10、 自定义函数<1>无参数函数#include <stdio.h>void main()void printstar(); /定义一个名为printstar的函数printstar(); /定义完成后使用该函数void printstar() /* 定义该函数为:printf("*n"); 打印“*”加回车 */Void 无返回值Int 返回整形Char 返回字符。<2>有参数函数#include <stdio.h>void main()Int max(

19、int x,int y) /定义一个名为max的函数,返回值为整形max(); /定义完成后使用该函数Int max(int x,int y) /* Int z; scanf(“%d,%d”,x,y)Z=x+y; 定义该函数Return z;Printf(“%d”,z); */#include <stdio.h>void main()int max(int x,int y); /定义一个求和的函数int a,b,c;scanf("%d%d",&a,&b);c=max(a,b); printf("%d",c);int max(i

20、nt x,int y) int z; z=x+y; return z; 11、关键字解释auto :声明break:跳出当前循环case:开关语句分支char :声明字符型变量或函数类型const :声明只读变量continue:结束当前循环,开始下一轮循环default:开关语句中的“其它”分支do :的循环体double :声明变量或函数返回值类型else :条件语句否定分支(与 if 连用)enum :声明枚举类型extern:声明变量或函数是在其它文件或本文件的其他位置定义float:声明变量或函数返回值类型for:一种循环语句goto:无条件跳转语句if:条件语句int: 声明或函数

21、long :声明变量或函数返回值类型register:声明return :返回语句(可以带参数,也可不带参数)short :声明短整型变量或函数signed:声明有符号类型变量或函数sizeof:计算或变量长度(即所占数)static :声明struct:声明switch :用于开关语句typedef:用以给数据类型取别名unsigned:声明无符号类型变量或函数union:声明类型void :声明函数无返回值或无参数,声明无类型指针volatile:说明变量在程序执行中可被隐含地改变while :循环语句的循环条件12、指针(地址)Int *a; /定义一个指针变量a(整形)#include

22、 <stdio.h>void main()int a,b;int *pa,*pb;a=100;b=55;pa=&a;pb=&b;printf("%d %dn",pa,pb);*和&不能丢。 多维数组:分别说明如下:如果指针变量p已指向数组中的一个元素,则指向同一数组中的下一个元素,-指向同一数组中的上一个元素。 (2) 如果p原来指向a0,执行+p后p的值改变了,在p的原值基础上加d,这样p就指向数组的下一个元素a1。(3) 如果的初值为,则和就是数组元素的地址,或者说,它们指向数组的第个元素 。*()或*()是或所指向的数组元素,即。

23、(5) 如果指针变量p1和p2都指向同一数组,如执行p2-p1,结果是两个地址之差除以数组元素的长度。 指针作函数参数:#include <stdio.h>void main()int max(int,int);int min(int,int);int add(int,int);void process(int x,int y,int(*fun)();int a,b;printf("endter a and b: ");scanf("%d %d",&a,&b);printf("max = ");proces

24、s(a,b,max);printf("min = ");process(a,b,min);printf("add = ");process(a,b,add);int max(int x,int y)if(x>y)return x;elsereturn y;int min(int x,int y)if(x<y)return x;elsereturn y;int add(int x,int y)int z;z=x+y;return z;void process(int x,int y,int(*fun)()int q;if (fun=max)q=

25、max(x,y);if (fun=min)q=min(x,y);if (fun=add)q=add(x,y);printf("%dn",q);int(*fun)()这个为定义指针函数。13、预处理(定义常量)(宏)(可以定义代码中的任何代码)# define /定义的常量名/ /常量的值/ 不用写数值类型,最后不加“;”如:#define PI 3.14#define char_1 “sdasda”A=1+PIPrintf(char_1)最好用大写来定义常量,以与变量区分。补充:#define i int那么 i a; 相当于int a;带参数的宏:#define M(x)

26、x*x+1K=M(2); /k=2*2+114、 结构体Struct student Int age; Char name; Char address;student1,student2;S1.age=11;/赋值S2.name=”xx”;/赋值Scanf(“%s%d”,&s1.address,&s1.age); /%s为字符串Printf(“s1s age is %d”,s1.age);思维与数组相似 数组下标=结构体.某分支-struct dateint year;int month;int day;structint num;char name20;char sex;st

27、ruct date birthday;float score;boy1,boy2;-声明一个结构体类型的一般形式为: struct 结构体名 成员表列;如:struct student int num;char name20;char sex; int age;float score;char addr30; 定义结构体数组 struct studentint num;char name20;char sex;int age;float score;char addr30; ;struct student3; 结构指针:Struct stuInt name;Int age;boy1=sss,1

28、3;Struct stu *p;P=&boy1;Printf(“name”,p->name); -Printf(“name”,p->age);-Printf(“name”,(*p).name);Printf(“name”,(*p).age);Printf(“name”,);#Printf(“name”,boy1.age);#以上三个全等链表:#include <stdio.h>struct studentlong num;double score;struct student *next;/student.next;void main()str

29、uct student a,b,c,*head;a.num=10101;a.score=89.5;b.num=10103;b.score=90;c.num=10107;c.score=85;head=&a;a.next=&b;b.next=&c;c.next=NULL;doprintf("%ld %lfn",head->num,head->score);head=head->next;while(head!=NULL);动态链表:malloc的语法是:指针名=(*)malloc(长度),(数据类型*)表示指针1、p=(char *)malloc(100);2、p1=p2=(struct student*)malloc(LEN);图11-1216、共用体unionint banji;char position10;category;调用:scanf("%d", &personi.category.banji);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论