先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
正文
>
> 🚩 运行结果:1 2 3 4 5 6 7 8 9 10
>
>
>
❗ 如果不想用了,就把 #define \_\_DEBUG\_\_ 注释掉:
#include <stdio.h>
// #define DEBUG // 关
int main(void)
{
int arr[10] = {0};
int i = 0;
for (i = 0; i < 10; i++) {
arr[i] = i;
#ifdef DEBUG // 此时ifdef为假
printf("%d ", arr[i]);
#endif
}
return 0;
}
>
> 🚩 (代码成功运行)
>
>
>
#### 0x01 条件编译之常量表达式
![](https://img-blog.csdnimg.cn/20210831084820335.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yaw5qON6KKL5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
📚 介绍:如果常量表达式为真,参加编译。反之如果为假,则不参加编译。
💬 代码演示:常量表达式为真
#include <stdio.h>
int main(void) {
#if 1
printf(“Hello,World!\n”);
#endif
return 0;
}
>
> 🚩 运行结果:Hello,World!
>
>
>
💬 代码演示:常量表达式为假
#include <stdio.h>
int main(void) {
#if 0
printf(“Hello,World!\n”);
#endif
return 0;
}
>
> 🚩 (代码成功运行)
>
>
>
💬 当然也可以用宏替换,可以表示地更清楚:
#include <stdio.h>
#define PRINT 1
#define DONT_PINRT 0
int main(void) {
#if PRINT
printf(“Hello,World!\n”);
#endif
return 0;
}
#### 0x02 多分支的条件编译
![](https://img-blog.csdnimg.cn/2021083109332166.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yaw5qON6KKL5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
📚 介绍:多分支的条件编译,直到常量表达式为真时才执行。
💬 代码演示:
#include <stdio.h>
int main(void) {
#if 1 == 2 // 假
printf(“rose\n”);
#elif 2 == 2 // 真
printf(“you jump\n”);
#else
printf(“i jump\n”)
#endif
return 0;
}
>
> 🚩 代码运行结果:you jump
>
>
>
#### 0x03 条件编译判断是否被定义
![](https://img-blog.csdnimg.cn/20210831104819610.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yaw5qON6KKL5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
📚 定义:ifdef 和 if defined() ,ifndef 和 if !defined() 效果是一样的,用来判断是否被定义。
💬 代码演示:
#include <stdio.h>
#define TEST 0
// #define TEST2 // 不定义
int main(void) {
/* 如果TEST定义了,下面参与编译 */
// 1
#ifdef TEST
printf(“1\n”);
#endif
// 2
#if defined(TEST)
printf(“2\n”);
#endif
/* 如果TEST2不定义,下面参与编译 */
// 1
#ifndef TEST2
printf(“3\n”);
#endif
// 2
#if !defined(TEST2)
printf(“4\n”);
#endif
return 0;
}
#### 0x04 条件编译的嵌套
📚 和 **if** 语句一样,是可以嵌套的:
#if defined(OS_UNIX)
#ifdef OPTION1
unix_version_option1();
#endif
#ifdef OPTION2
unix_version_option2();
#endif
#elif defined(OS_MSDOS)
#ifdef OPTION2
msdos_version_option2();
#endif
#endif
### 三、文件包含
>
> 我们已经知道,#include 指令可以使另外一个文件被编译。就像它实际出现于 #include 指令的地方一样。替换方式为,预处理器先删除这条指令,并用包含文件的内容替换。这样一个源文件被包含10次,那就实际被编译10次。
>
>
>
#### 0x00 头文件被包含的方式
![](https://img-blog.csdnimg.cn/20210831112916957.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yaw5qON6KKL5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
📚 < > 和 " " 包含头文件的本质区别:查找的策略的区别
① " " 的查找策略:先在源文件所在的目录下查找。如果该头文件未找到,则在库函数的头文件目录下查找。(如果仍然找不到,就提示编译错误)
**Linux环境** 标准头文件的路径:
/usr/include
**VS环境** 标准头文件的路径:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include
② < > 的查找策略:直接去标准路径下去查找。(如果仍然找不到,就提示编译错误)
❓ 既然如此,那么对于库文件是否也可以使用 " " 包含?
💡 当然可以。但是这样做查找的效率就低些,当然这样也不容易区分是库文件还是本地文件了。为了效率不建议这么做。
💬 代码演示:
① **add.h**
int Add(int x, int y);
② **add.c**
int Add(int x, int y) {
return x + y;
}
③ **test.c**
#include <stdio.h>
#include “add.h”
int main(void) {
int a = 10;
int b = 20;
int ret = Add(a, b);
printf(“%d\n”, ret);
return 0;
}
>
> 🚩 运行结果:30
>
>
>
#### 0x01 嵌套文件的包含
❗ 头文件重复引入的情况:
![](https://img-blog.csdnimg.cn/20210831152200654.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yaw5qON6KKL5a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)
>
> **comm.h** 和 **comm.c** 是公共模块。
> **test1.h** 和 **test1.c** 使用了公共模块。
> **test2.h** 和 **test2.c** 使用了公共模块。
## 学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
![在这里插入图片描述](https://img-blog.csdnimg.cn/7a04c5d629f1415a9e35662316578e07.png#pic_center)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
![img](https://img-blog.csdnimg.cn/img_convert/912080576a3d46640dbcca94482a068e.png)
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
![在这里插入图片描述](https://img-blog.csdnimg.cn/7a04c5d629f1415a9e35662316578e07.png#pic_center)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**
[外链图片转存中...(img-BKljqWfb-1713470792438)]
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**