预处理与构造数据

knowledge can grow with given

一、预处理(预编译)
    定义:在编译之前对程序进行的处理
                                预编译     编译     汇编      链接
                        *.c ——> *.i —> *.S —> *.o —> elf
                        MOV R1, R2 —>  1010 0001 0010

包含:头文件包含、宏定义、条件编译

二、头文件包含
    作用:将很多个编译单元共用的内容存放到一个文件中,                        谁用谁包含该文件,避免了大量的重复书写。
    主要包含:函数声明、宏定义、结构体定义
    处理方式:完全展开,若头文件中包含其他头文件,
                                     会递归展开
    #include <xx.h>:
    去系统默认目录查找
    #include “xx.h”:
    先在当前目录查找,找不到再去系统默认目录查找

头文件不能重复包含,会造成重复定义;
    但是使用以下方式可以避免此问题。
 
 #ifndef _STDIO_H_
 #define _STDIO_H_
 
    #endif /* _STDIO_H_ */

三、宏定义
    定义:用简单易记的名字代表特定的内容
    例子:#define PI 3.14159
    处理方式:简单地替换
    优点:增强代码的可读性,书写简单

带参宏:不等价于函数
    1、若整个式子有返回值,需要添加括号
    2、参与运算的参数需要添加括号

四、条件编译
    定义:给某段代码指定编译条件
    处理方式:参与或不参与编译
    格式一:
    #if 表达式
    
    #endif

#ifdef 宏

#endif

#ifndef 宏

#endif

格式二:
    #if 表达式
    
    #else

#endif

说明:没有明确地分文件规定,一般按照功能模块

五、结构体
    定义:由多种数据类型的变量结合在一起的结构
    关键字:struct
    格式:
    typedef struct book {
    char name[20];
    char author[200];
    float price;
    }BOOK;
    变量定义:BOOK book1;
    成员变量:
                变量名.成员名
                指针名->成员名
    结构体可以整体赋值,作为函数参数传递时,传递的是值
    大小:每个成员都有自己的存储空间,但并不是简单的相                        加,还与数据的存储对齐有关.
    结构体定义:可以包含其它类型的结构体变量,                                            但是不能包含自身结构体变量;
                                            可以包含指向自身类型的指针变量

六、联合体
    定义:多个变量占用同一内存空间的结构,叫共用体
    关键字:union
    特点:
    1、大小等于占用存储空间最大成员的大小
    2、某一时刻只能一个成员有效

七、枚举
    定义:将变量的可能取值一一列举出来,
                        变量的值只能在列举的范围内取值。
                        有人也把枚举称为一堆宏的集合
    关键字:enum
    特点:枚举值默认是从0开始的连续整数,依次递增;
                        在声明枚举类型时可以指定枚举值,
                        指定后的枚举值依次递增。
    优点:提高代码的可读性

程序中的可见常数称为幻数,应尽量少用

练习:
1、编写一个简易的字典,实现查找功能,字典的单词和释义保存在一个字符指针数组中,格式:
char *dic[] = {
    “apple:??”,
    “banana:??”,
};
要求:声明放在头文件中,实现放在不同的C文件中,其中字符串操作放在strop.c中,排序函数放在sort.c中,这两个文件都有各自的头文件。
2、设置某个数据的某一位(0/1 —> 1)
3、清除某个数据的某一位(0/1 —> 0)
4、取反某个数据的某一位(0–>1、1–>0)
5、打印一个数的二进制版本,如:250,打印:11111010
        a & (1<<i)==0  a的第i位为0

时间: 2024-11-05 18:33:27

预处理与构造数据的相关文章

LINUX安全--构造数据实现缓冲区溢出

源代码: #include <stdio.h> #include <stdlib.h> #include <string.h> char *file[2] = {"superman.txt","batman.txt"}; char email[128]; char* cat_file(char *fileName){ FILE *fp; char *content = (char *)malloc(40); memset(cont

使用预处理语句实现数据查询的方法

查询数据库里面有多少条数据 $m=new mysqli('localhost','root','','db'); $m->set_charset('utf8'); $stmt=$m->prepare('select count(*) from stu'); $stmt->execute(); $stmt->bind_result($c); $stmt->fetch(); echo $c; $stmt->free_result(); $stmt->close();

接口测试构造数据的几种方法总结

我们一般接口测试测的无非这几种: 1.把数据post给某个接口,看接口返回情况. 2.访问某个接口,接口携带的参数不一样,测试其返回情况 3.直接访问某个接口(不需要你修改携带参数),查看该接口返回的内容.这个一般是查看接口返回的数据对不对,一般用于两个系统之间互相传递数据. 对于第2中情况,往往不需要我们构造数据,直接给url携带不同的参数即可. 但是对于1,3中情况,需要我们自己构造数据. 总结一下这2种情况构造数据的方法(记性不太好,原谅我什么都要记录一下,哪怕是一个很简单的方法). 情况

oracle/MySQL构造数据的存储过程

oracle构造数据的存储过程://其中涉及的参数i.表名.表字段根据实际需要进行修改 DECLARE --声明函数i INT;BEGIN i:=1000;WHILE(i<6000) LOOP --设置loop循环 i:=i+1; insert into t_play_list (PLAYLIST_ID, BITRATE, JSON, START_INDEX, CREATE_TIME, VOLUME_NAME, START_NPT) values (i, '3750', '{"smil&q

scikit-learn:4. 数据集预处理(clean数据、reduce降维、expand增维、generate特征提取)

本文參考:http://scikit-learn.org/stable/data_transforms.html 本篇主要讲数据预处理,包含四部分: 数据清洗.数据降维(PCA类).数据增维(Kernel类).提取自己定义特征. 哇哈哈.还是关注预处理比較靠谱. .. . 重要的不翻译:scikit-learn providesa library of transformers, which mayclean (see Preprocessing data), reduce (seeUnsupe

scikit-learn:数据集预处理(clean数据、reduce降维、expand增维、generate特征提取)

本文参考:http://scikit-learn.org/stable/data_transforms.html 本篇主要讲数据预处理,包括四部分: 数据清洗.数据降维(PCA类).数据增维(Kernel类).提取自定义特征.哇哈哈,还是关注预处理比较靠谱.... 重要的不翻译:scikit-learn provides a library of transformers, which may clean (see Preprocessing data), reduce (seeUnsuperv

构造数据包进行批量用户注册

长知识: 现大部分服务端.客户端都默认是将数据进行UTF-8编码,但是当客户端向服务端发送的数据包中含有中文时,一定在headers中说明charset,否则服务器端知道要用什么编码方式解码.而英文.数字等一般服务器端默认用UTF-8解码. #coding:UTF-8 import urllib2 import urllib import cookielib import json import sys import shutil import xlrd import chardet impor

python构造数据

#coding=utf-8import randomimport time def createRandomMac(): Maclist = [] for i in range(1,7): RANDSTR = "".join(random.sample("0123456789abcdef",2)) Maclist.append(RANDSTR) RANDMAC = ":".join(Maclist) print RANDMAC def creat

python构造数据1_column.py

#coding=utf-8import randomimport timeimport datetime TIMESTART = '2016-06-04 10:00:01' #increase time, string to time, then add seconds you want, at last, time to stringdef increaseTime(base_time): date_time = datetime.datetime.strptime(base_time,'%Y