c 语言

来源:互联网 发布:淘宝特步 编辑:程序博客网 时间:2024/06/05 09:35

c语言

c 替换 编译 链接 硬编码
c 宏是替换 0x21 链接(所有dll 链接时期)

c 宏

\# define TRUE  1\# define FALSE 0 //编译前替换\# define MAX(A,B) ((A)>(B)?(A):(B))//不开辟堆栈//宏与函数的区别:函数分配额外的堆栈空间,而宏只是替换//为了避免出错,宏定义中给形参加上括号//末尾不需要分号//define 可以替换多行的代码,记得后面加\#define MALLOC(n,type)\       ((type*)malloc((n)*sizeof(type)))

define 定义宏
typedef 重命名一种数据类型
define NUMBER 6
程序中凡是写NUMBER的地方,编译器会自动替换成6
typedef int myint
重定义int类型为myint类型,程序里就可以用myint类型定义变量,效果等同于int类型,主要是方便理解代码中变量的意义,比如定义typedef int age,然后用age类型定义变量,很容易就可以看出这是指年龄,比用int更清楚

头文件:

\#include "stdafx.h"//.h声明,cpp里面函数\#include "stdlib.h"\#include "windows.h"void Function(){    printf("Hello World!");}int main(int argc,char* argv[]){    Function();    system("pause");    return 0;}

重复包含问题:

x.h/#include z.h     y.h/#include z.hz.hstruct Student{    int level;}//解决方案:/#if !defined(zzz)#define ZZZstruct Student{    int level;}#endif

内存分配与释放

将记事本的.exe文件读取到内存,并返回读取后在内存中的地址。
不知道exe文件多大。需要动态申请内存。

malloc    int main(int argc, char* argv[]){    int* ptr;    //在堆中申请内存,分配128个int    ptr = (int *)malloc(sizeof(int)*128);    //无论申请的空间大小 一定进行校验 判断是否申请成功    if(ptr==NULL){         return 0;        }    //初始化分配的空间    memset(ptr,0,sizeof(int)*128)    //使用。。。    *(ptr)=1;    //使用完毕 释放申请的堆空间    free(ptr);    //将指针设置为null    ptr=null;        return 0;    }

void * 任何类型的指针
void* malloc(size_t) //需要释放
32位机器每一个exe都有一个4g的虚拟空间

代码区
数据区:
栈区
全局区
常量区
堆:动态内存在堆中分配 。现用现分。

文件读写:

1、fopen函数
2、fseek函数
3、ftell函数
4、fclose函数

练习

原创粉丝点击