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"

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

posted on 2016-02-16 21:41  三少爷的剑123  阅读(153)  评论(0编辑  收藏  举报

导航