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"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值