小甲鱼学完的c语言笔记

小甲鱼学完的c语言笔记
小甲鱼学完的c语言笔记

目录

(ctrl 加鼠标点击)

1、翻译查阅

2、辅助网上写法

3、命令

4、头文件

5、printf格式字符

6、整型数据字节范围表

7、命令格式

8、循环结构

9、数组10、自定义函数

11、关键字解释12、指针

13、预处理14、结构体

15、辅助框架16、共用体

&& 与如果两个的返回值都是真,那么这个的返回值才为真|| 或如果两个的返回值都是真,那么这个的返回值才为真!非

printf("%d %s %c %c %d \n")

相当于:

printf("%-5d%-5s%-4c%-8c%-8s\n")

(数字代表空格数)

15、辅助框架:

#include

#include

#define lpBaseAddress 0x486150//地址常量

void main()

{

while(1)

{

char x;

HANDLE hProcess;//句柄

DWORD lpBuffer;//写入的值

DWORD res;//写内存的返回值,判断是否成功

DWORD pid;//PID

HWND hWnd;//窗口句柄

printf("E键退出\nR键修改\n");

x=getchar();

if(x=='e'||x=='E')

{

break;

}

else

{

hWnd=FindWindow(NULL,"444");

printf("hWnd:%d\n",hWnd);

GetWindowThreadProcessId(hWnd,&pid);

printf("PID:%d\n",pid);

hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pid);

printf("hProcess:%d\n",hProcess);

printf("修改多少?\n");

scanf("%ld",&lpBuffer);

lpBuffer=lpBuffer-10;

res=WriteProcessMemory(hProcess,lpBaseAddress,&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,

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]本地进程中内存地址. 函数将读取的内容写入此处//变量dwSize [in]要传送的字节的长度

pdwNumBytesRead [out]实际传送的字节数.//变量

读到的=Readprocessmemory(hProcess,0xFFFFFFFF,缓冲区,4,0)

写内存:

WriteProcessMemory

hProcess int 进程句柄

lpBaseAddress int 内存地址

lpBuffer int 指向要写的数据的指针

nSize int 要写入的字节数

WriteProcessMemory(hProcess,0xFFFFFFFF,缓冲区(写入的值),4,0)关闭句柄:

CloseHandle(hProcess)

1、信息框:

#include

MessageBox(0,"hh"//内容,"hh"//标题,MB_OK//确定键)

api:

.DLL命令API_MessageBox, 整数型, "user32", "MessageBoxA", 建立消息框窗体.参数1, 整数型,0 ,

.参数2, 文本型, “内容”,

.参数3, 文本型, “标题”,

.参数4, 整数型, MB_OK//即确定键,

2、辅助网上写法:

点击查看!(ctrl加鼠标点击)

3、命令

While 循环命令

while()循环括号里只有2种值,0和非0,0表示假,非0表示真(即1)。真就进入循环,假就离开循环。这里1就表示永真,直到循环体内遇到break。

a=0

While(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。相当于如果真()

****************************************************************************************************/

第二种形式为:

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);的时候。输入的时候输入两个数,中间还要用逗号隔开的,否则会出错。用scanf("%d%d",&a,&b);的时候,输入两个数的时候,不用输入逗号。可以用空格隔开。相当于监视热键()中的得到热键代码。注意:&不能丢。

scanf意思是从键盘输入数据,从键盘得到字符,放到某个变量里,当然要它的地址了;printf 意思是输入某个变量的内容,只要知道变量名就行了。

#include

#include

void main()

{

char a,b;

scanf("%c,%c",&a,&b);

printf("%c,%c\n",a,b);

}

Scanf可以得到整形,如:

int a;

scanf("%d",&a);

//输入2015

a==2015;

X=Getchar()取得字符,赋值给x,即把键盘上打的键的代码给x(之前要char x)若按下a键,那么x中的键码为‘a’

#include

#include

void main()

{

char a,b;

a=getchar();

b='z';

printf("%c,%c\n",a,b);

}

自增自减符:

自增自减符的两种形式平时一样,但在判断真假时用法不同,并且在运算时也不同,如下图:

Putchar 输出单个字符

If{}else{}可以写成条件表达式:

If (a>b){max=1;}else{max=2;} 等于max=(a>b)?1:2;

switch语句

#include

void main()

{

int a;

printf("input integer numbers: "); //打印

scanf("%d",&a); //相当于监视热键()

switch(a) //相当于标签响应事件的参数一的判断{ //各个分支,若输入1则执行分支1,case case 1:printf("周1\n");break; 后只能为整型,可以跟表达式,但结果为整形case 2:printf("周2\n");break; //break跳出循环

case 3:printf("周3\n");break;

case 4:printf("周4\n");break;

case 5:printf("周5\n");break;

case 6:printf("周6\n");break;

case 7:printf("周7\n");break;

default:printf("error\n");

}

}break 跳出循环

8、循环结构

<1>goto语句

#include

void main()

{

int a;

a=1;

xx:if (a<50)

{

a=a*2+10;

printf("%d\n",a);

goto xx;

}

printf("%d\n",a);

}

其中,xx为标识符。

<2>while语句

#include

void main()

{

int a=1,b=0;

while(a<=100)

{

b=a+b;

a++;

}

printf("%d\n",b);

}

<3>、do——while语句:

与while完全相同,就是先把代码完成,在判断。Do{}while();

#include

void main()

{

int a=1,b=0;

do

{

b=a+b;

a++;

}

while(a<=100);

printf("%d\n",b);

}

For语句:

for(变量最初的值;循环条件;变量递增或改变)

代码;

如:

#include

void main()

{

int a,b;

for (a=1,b=0;a<=100;a++)

{

b=b+a;

}

printf("%d\n",b);

}//求1加到100,最后输出5050.

其中,参数1可以省略,但要在之前赋值。

其中,参数2不能省略。

其中,参数3可以省略,但要在循环中写出。

int a=1,b=0;

for (/*参数1*/;a<=100;/*参数3*/)

{

b=b+a;

a++;

}

For循环的嵌套:

#include

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个),continue本次循环continue后的代码,但仍然循环。

Getch ①相当于停止,按随意键后继续头文件

②字符输入函数,得到字符后传给一个变量。如:a=getch(),可能

与getchar()相同。

9、数组

定义数组:int a[10]; //定义一个数组a,有10个元素。

Int a[5],b,c,d[6]; //可以同时定义多个同类型的数组。

数组是从0下标开始,如int a[3];则元素为a[0]、a[1]、a[2]

数组的赋值:

①初始化全部赋值:int a[3]={5,9,7};//在定义的时候赋值

②初始化部分赋值:int a[3]={5,9};//那么a[0]=5; a[1]=9; a[2]=0;(即未赋值)

③单个赋值:int a[3]; a[0]=5; a[1]=9; a[2]=7;

二位数组:

动态数组:

10、自定义函数

<1>无参数函数

#include

{

void printstar(); //定义一个名为printstar的函数

printstar(); //定义完成后使用该函数

}

void printstar() /*************************************

{ 定义该函数为:

printf("**********\n"); 打印“************”加回车

} *************************************/

Void 无返回值

Int 返回整形

Char 返回字符

。。。。。。

<2>有参数函数

#include

void main()

{

Int max(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

void main()

{

int max(int x,int y); //定义一个求和的函数

scanf("%d%d",&a,&b);

c=max(a,b);

printf("%d",c);

}

int max(int 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:声明整型变量或函数

long :声明长整型变量或函数返回值类型

register:声明寄存器变量

return :子程序返回语句(可以带参数,也可不带参数)short :声明短整型变量或函数

signed:声明有符号类型变量或函数

sizeof:计算数据类型或变量长度(即所占字节数)

static :声明静态变量

struct:声明结构体类型

switch :用于开关语句

typedef:用以给数据类型取别名

unsigned:声明无符号类型变量或函数

union:声明共用体类型

void :声明函数无返回值或无参数,声明无类型指针

volatile:说明变量在程序执行中可被隐含地改变

while :循环语句的循环条件

12、指针(地址)

Int *a;//定义一个指针变量a(整形)

#include

void main()

{

int a,b;

int *pa,*pb;

a=100;

b=55;

pa=&a;

pb=&b;

printf("%d %d\n",pa,pb); }

*和&不能丢。

相关主题
相关文档
最新文档