20160122.CCPP详解体系(0001天)

程序片段(01):Hello.c
内容概要:HelloWorld

//01.#include表示包含的作用:
// (1).<>:表示只在系统目录之下进行查找
// (2)."":表示现在当前目录下进行查找,如果在当前目录下
// 未能进行查找到,再到系统目录之下进行查找
// (3).替换:<>可以采用""进行替换,但是""不可以采用<>进行替换
#include "stdlib.h"

//02.注释使用说明:
// (1).多行注释:/**/,用作项目说明
// 1.第一步
// 2.第二步
// (2).单行注释://

//02.函数相关问题分析:
// (1).void:表明函数的返回值类型为空
// 该函数无需使用return关键字表明该函数的返回值
// (2).int:返回值类型的特点
// Linux当中的main函数强制要求返回值类型为int类型
// (3).函数构成元素分析:
// 1).()表明形式参数
// 2).()和(void)都代表函数的参数为空,效果等同

//03.编译器特性分析:
// (1).C编译器会自动查找相应的静态库,进行自动引入
// C编译器宽泛
// (2).C++编译器不会自动查找相应的静态库,不会进行自动引入
// C++编译器严格

//04.system();函数的使用说明:
// (1).函数所接收的参数不同,那么结果也相应的不一样
// (2).只接受字符串
// (3).常用命令说明:
// 1).tasklist:查看系统进程列表(当前系统当中正在运行的进程列表)
// 2).echo用于原样输出一段字符串

//05.return关键字的使用特点:
// (1).用于结束函数的执行状态,指导函数出栈
// (2).return关键字之后的语句不会得到执行
// 注意:
// 如果在return语句的后面还有代码语句,那么在Java语言环境下将会
// 直接编译报错,因为Java语言极度严谨不允许废话出现
int main01(void)
{
    system("tasklist");//查看系统进程列表,"tasklist"是表明字符串
    system("echo Hello World!!!");//参数不同,执行的结果不同

    system("pause");//让当前进程暂停一下,等待用户输入任意键继续执行

    return 1;//没有返回值,结束函数的执行状态,函数出栈
    system("echo Hello China!!!");
}

程序片段(02):1.txt+2.txt+include.c
内容概要:HelloWorld

///1.txt
system("notepad");
system("pause");
///2.txt
//void main(){}
///include.c
//01.#include使用说明:
// (1).#include只是将头文件当中的声明内容原样拷贝过来
// (2).#include可以包含任何后缀类型的文件
// (3).所有被包含的文件都被当中普通文本文件内容解析
// (4).#include语句可以出现在文件(头文件/源文件)当中的任何位置
//02.重名问题分析:
// 当前解决方案之下的文件不能够同名
// (注意事项:即使是同一个解决方案下的跨项目文件依然如此)
//03.包含和编译的规律分析:
// 包含,包含的是头文件(.h)
// 编译,编译的是源文件(.c,.cpp)
// (编译器会自动将.c/.cpp本质的文件进行编译,即使是修改了文件的
// 扩展名称,但是文件的本质依然还是被编译的对象)
//04.VC编译器当中的提示特点:
// 只是针对于代码文件(头文件/源文件)具备提示
#include <stdlib.h>

int main(void)
{
#include "1.txt"
    system("pause");
    return 1;
}                 

程序片段(03):return.c
内容概要:HelloWorld

#include <stdio.h>
#include <stdlib.h>

//int main(void)
//{
//
// return;
//}

int add()//int整数
{
    return 100;
}

//01.CCPP当中的函数返回值特点分析:
// (1).CCPP当中的main函数即使声明了整数返回类型
// 却依然可以不用显式的采用return关键字返回整数值
// (2).普通函数有些不同:
// C语言当中即使声明了返回值类型也可以不用采用return
// 关键字进行值的返回
// (注意:如果此时获取返回值的结果,将会是编译器指定的
// 一个固定垃圾值(表明垃圾,表明垃圾明显))
// C++语言当中只要声明了返回值类型就必须采用return
// 关键字进行值的返回
// (3).CCPP编译器的不同所造成的差异:
// C语言编译器:
// 要求松散,很容易出错
// C++语言编译器:
// 要求严格一些,结果会正确
//02.打印结果特点分析:
// %d表示将内存当中的二进制数数据采用有符号十进制的方式进行解析
int main(void)
{
    printf("%d", add());

    system("pause");
    return 1;
}

程序片段(04):system.c
内容概要:system();函数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

//01.从控制台获取一个命令字符串并且执行:
// (1).C语言当中的字符数组代表的就是字符串
// (2).scanf();函数的第二项必须是地址(指针)
// 数组名称比较特殊,数组名称是一个常量指针
// (3).printf();函数的第二项所需的是变量,而非指针
int main(void)
{
    char str[100] = { 0 };//空字符串,初始化为0,'\0'(0和'\0'在这里的意义相同)
    scanf("%s", str);//给字符串进行赋值操作,从首地址开始,一个一个字符的映射
    printf("您所需要执行的指令是:%s", str);//打印字符串
    system(str);//执行系统指令

    system("pause");
    return 1;
}

程序片段(05):Time.c
内容概要:C语言程序结构

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

//01.编译阶段所需做的事情:
// (1).预编译:
// 1).预处理阶段,凡是预处理指令内容都得进行处理
// 2).预处理指令:
// (1.以"#"作为开头的命令
// (2.常见预处理指令:#define+#include
// 3).预处理判断,预处理替换
// 4).预处理之后的结果还是源文件
// (2).编译:
// 1).将预处理之后的源文件编译成为二进制文件(中间文件,对象文件)
// 2).二进制文件特点:GCC编译结果为".o"文件,VC编译结果为".obj"文件
//02.全局声明特点:
// (1).程序一旦加载进内存,全局声明的内容就立刻出现了
// (2).全局申明内容的作用域:
// 从当前源文件的声明位置到跨程序源代码范围内都可见
// (只有当前源文件的声明位置开始之前不能够进行访问)
int num = 100;//全局声明

//02.同步异步执行问题分析:
// (1).同步异步概念:
// 同步:单条执行流,从上往下进行执行,一个一个的执行,不允许跨越执行
// 异步:多条执行流,从上往下进行执行,每条执行流随机执行,没有跨越的概念
// (2).system函数的同步异步操作:
// 命令字符串没有start-->同步执行-->单条执行流-->发生阻塞特点
// 命令字符串含有start-->异步执行-->多条执行流-->没有阻塞特点
// (3).system();函数的异步等同于:
// 另起一个命令行窗口执行该命令,和当前命令行不属于同一个执行流
int main01(void)
{
    //system("notepad");//后面的语句必须要等待当前程序退出,才会得到执行的机会,同步
    system("notepad");//不等待退出就得到执行,叫做异步
    system("tasklist&pause");

    system("pause");
    return 1;
}

int main02(void)
{
    system("start notepad");//异步打开一个记事本

    Sleep(5000);

    system("taskkill /f /im notepad.exe");

    system("pause");
    return 1;
}

//03.无限循环的实现方式:
// (1).while(0){无限执行体;}
// (2).值为非0,死循环;值为0,不循环
int main03(void)
{
    while (1) 
    {
        system("start notepad");
    }

    system("pause");
    return 1;
}

int main04(void)
{
    int num = 10;
    printf("%d \n", num);

    system("pause");
    return 1;
}

int main05(void)
{
    system("start notepad");
    main();//递归-->死循环

    return 1;
}

程序片段(06):QQ.c
内容概要:C语言编程流程

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <shellapi.h>

//01.system();函数使用总结:
// (1).早期版本可以直接跟路径,如果版本不能跟路径
// (2).指令字符串当中如果有start,则不能跟路径
// 指令字符串当中若没有start,则可以跟路径
void close()
{
    //start不能携带路径,需要提前进入到目录,再进行命令的执行
    //system("D:\\ProgramFiles\\Tencent\\QQ\\QQScLauncher.exe");
    //system("\"D:\\ProgramFiles\\Tencent\\QQ\\QQScLauncher.exe\"");
}

//01.同步执行命令与异步执行命令:
// 执行特点分析:
// system();
// 1.同步执行指令字符串
// 2.不能执行携带路径的指令
// system("start ");
// 1.异步执行指令字符串
// 2.不能执行携带路径的指令
// ShellExecuteA(0,"open","notepad",0,0,1);
// 1.异步执行指令字符串
// 2.可以执行携带路径的指令
// 3.可定制执行携带路径的指令特点
// 第一个参数:默认-->0
// 第二个参数:操作-->"open"
// 第三个参数:命令-->"notepad"
// 第四五个参数:默认
// 第六个参数:0-->隐式打开;1-->默认打开;3-->最大化打开;6-->最小化打开
void openNote()
{
    ShellExecuteA(0, "open", "notepad", 0, 0, 6);
}

void openQQ()
{
    ShellExecuteA(0, "open", "D:\\ProgramFiles\\Tencent\\QQ\\Bin\\QQScLauncher.exe", 0, 0, 1);
}

void time()
{
    int num = 0;
    scanf("%d", &num);
    int i = 0;
    while (i < num)//i>=m将不再循环
    {
        Sleep(1000);//循环一次,睡眠1000毫秒,也就是1秒钟-->循环多少次,也就执行了多少秒
        i++;
        printf("%d", i);
    }
}

void closeQQ()
{
    system("taskkill /f /im QQ.exe");
}

int main01(void)
{
    //close();

    openQQ();

    time();

    closeQQ();

    system("pause");
    return 1;
}

程序片段(07):1.h+define.c+代码混淆.c
内容概要:#define宏定义使用

///1.h
#include <stdlib.h>
#include <stdio.h>

//01.宏定义源文件:
// (1).相当于ASCII码表的查询特点
// (2).相当于编解码特点
// (3).相当于加密的特点
#define _ void
#define __ main
#define ___ (
#define ____ )
#define _____ {
#define ______ }

#define _______ printf("Helloc China, Hello World! \n");
#define ________ system("echo 锄禾日当午, 吴伟来跳舞; 地雷埋下土, 炸成二百五! \n");
#define _________ system("ipconfig");
#define __________ system("calc");
///define.c
#include <stdlib.h>
#include <stdio.h>

#define 给老夫跑起来 main01
#define 执行 system

//01.打印输出一段文字的使用特点:
// (1).输出方式的本质不同:
// IO输出方式:printf();
// system方式:system("echo");
// (2).输出方式的效果完全等效
//02.宏定义#define使用特点:
// #define 宏名 原始字符串
void  给老夫跑起来()
{
    printf("Hello China, Hello World! \n");
    system("echo 锄禾日当午, 吴伟来跳舞; 地雷埋下土, 炸成二百五! \n");
    system("ipconfig");
    执行("calc");

    system("pause");
}
///代码混淆.c
//01.引入宏定义规则文件:
//  1.根据规则使用宏名
//  2.宏定义解密需要宏定义规则文件
//      1.也就是所谓的宏定义规则头文件,查询宏定义规则头文件可以实现解码
//      2.预编译的时候,其实就是将宏名替换为原始的字符串
#include "1.h"

_ __ ___ ____ _____ _______ ________ _________ __________ ______

程序片段(08):1.h+define.c
内容概要:#define宏定义使用

///1.c
#include <stdlib.h>
#include <stdio.h>
#include <Windows.h>

//01.头文件的性质说明:
// 宏定义规则文件,根据宏定义的规则
// 进行规则的使用
#define 空类型 void
#define 主函数 main
#define 左括号 (
#define 右括号 )
#define 左大括号 {
#define 右大括号 }
#define 执行 system
#define 打印 printf
#define 记事本 "notepad"
#define 计算器 "calc"
#define 系统进程 "tasklist & pause"
#define 语句结束 ;
///define.c
#include "1.h"

空类型 主函数 左括号 右括号
左大括号
    打印 左括号 记事本 右括号 语句结束
    执行 左括号 计算器 右括号 语句结束
    执行 左括号 记事本 右括号 语句结束
    执行 左括号 系统进程 右括号 语句结束
右大括号

你可能感兴趣的:(CCPP)