惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
SecWiki News
SecWiki News
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
小众软件
小众软件
C
CERT Recently Published Vulnerability Notes
Jina AI
Jina AI
N
Netflix TechBlog - Medium
GbyAI
GbyAI
IT之家
IT之家
Apple Machine Learning Research
Apple Machine Learning Research
AWS News Blog
AWS News Blog
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
C
Cybersecurity and Infrastructure Security Agency CISA
I
Intezer
T
Tor Project blog
P
Palo Alto Networks Blog
P
Privacy & Cybersecurity Law Blog
P
Privacy International News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Proofpoint News Feed
T
Tailwind CSS Blog
C
Check Point Blog
Cloudbric
Cloudbric
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
Forbes - Security
Forbes - Security
Last Week in AI
Last Week in AI
S
Security Affairs
博客园 - Franky
F
Fortinet All Blogs
量子位
M
MIT News - Artificial intelligence
C
Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
S
Secure Thoughts
V
Visual Studio Blog
AI
AI
美团技术团队
B
Blog RSS Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
Engineering at Meta
Engineering at Meta
人人都是产品经理
人人都是产品经理
Microsoft Security Blog
Microsoft Security Blog
T
Threatpost
Cyberwarzone
Cyberwarzone

猫涅的秘密结社

hackthissite-org 数据库原理相关 关于在与我互动前你可能需要了解的事 信安roadmap 个人主页开发汇报 六级生词速记本——附考后感想 数据结构C++自学相关 NewStarCTF-2025 三款steam付费番茄钟软件测评 夏令营-ai hello-world qt环境下的c++程序编写 新新的年 qq机器人配置二三事 搞点java 读书笔记-当下的力量 网页小修时间 glibc更新记录 Vulhub在线靶场记录 Vulhub记录(旧的) 神奇脚本在哪里-CTF之Pwn BaseCTF高校联合新生赛2024 逆逆逆逆逆向-CTF之reverse 求解 夺旗时间 学学学 渗透测试相关 协议/漏洞/网络 最新的知识点 数据分析相关 zico2解析 OverTheWire-bandit解析 CTF实战相关2 靶机解析-gigachad ctf实战相关1 复习time 开学季 维修时间 小小修整 学校实训-笔记 每周靶机之Beelzebub 读书笔记-如何阅读一本书 DC-4解析 DC-2解析 每周靶机之ted 靶机-DC-1 每周靶机之bob potato解析 xss跨站点脚本攻击 每周靶机之Tommyboy1dot0 owasp命令执行漏洞 owasp文件包含漏洞 每周靶机之WALLABY'S-NIGHTMARE owasp上传漏洞 Hackademic.RTB1 owasp与sql注入与sqlmap liunx中sudo服务相关知识 liunx中ssh服务相关知识 moneybox解析 关于加入aplayer的方式 再来一次 关于在next7.8.0中建设评论功能这件事 目前的进展 编辑小提示
C语言相关1
nirvana_felis · 2023-08-01 · via 猫涅的秘密结社

所以 最近很闲 所以开始学c语言

准备步骤

我使用了visual studio code配置c语言环境的方法来实现程序的调试和运行
我所参考的教程

学习笔记啥的

一.经典到不能再经典的hello world

1
2
3
4
5
6
7
#include <stdio.h>
int main()
{
/\* 我的第一个 C 程序 \*/
printf("Hello, World! \n");
return 0;
}

实例解析:

  • 所有的 C 语言程序都需要包含 main() 函数。 代码从 main() 函数开始执行。
  • /* … */ 用于注释说明。
  • printf() 用于格式化输出到屏幕。printf() 函数在 “stdio.h” 头文件中声明。
  • stdio.h 是一个头文件 (标准输入输出头文件) , #include 是一个预处理命令,用来引入头文件。 当编译器遇到 printf() 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。
  • return 0; 语句用于表示退出程序。

二.关于定义变量和变量的类型

(1)单纯的计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h> //这个是类似于import的东西 没有它printf会失效
int x;// 这里是我定义了x
int y;// 这里是我定义了y
int wow()// 定义一个叫wow()的进程
{
    extern int x;// 借用外部定义好的x
    extern int y;// 借用外部定义好的y
    x = 1222;
    y = 1999;// 为x y赋值
    return x\*y;// 程序的结果是输出x乘以y的数字
}
int main()// 主程序 不能缺少
{
    int jieguo;
    jieguo = wow(); //用jieguo这个定义好的变量来表示wow()的结果
    printf("你得到的结果是:%d",jieguo);//将输出的东西表示出来
    return 0;//结束程序
}

输出结果:

1
你得到的结果是:2442778

题外话:
printf()中的%d指输出整数,实际显示的时候会被逗号后的结果所代替。

(2)利用scanf()加入互动环节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h> //这个是类似于import的东西 没有它printf会失效
int x=0;// 这里是我定义了x
int y=0;// 这里是我定义了y
int wow()// 定义一个叫wow()的进程
{
    extern int x;// 借用外部定义好的x
    extern int y;// 借用外部定义好的y
    printf("请输入x值\n");
    scanf("%d",&x);
    printf("请输入y值\n");
    scanf("%d",&y);
    return x\*y;// 程序的结果是输出x乘以y的数字
}
int main()// 主程序 不能缺少
{
    int jieguo;
    jieguo = wow(); //用jieguo这个定义好的变量来表示wow()的结果
    printf("你得到的结果是:%d",jieguo);//将输出的东西表示出来
    return 0;//结束程序
}

输出:

1
2
3
4
5
请输入x值
9
请输入y值
11
你得到的结果是:99

题外话:
scanf()中输入的东西是他所需要获取的 如加入逗号或者空格后不按照格式输入
理论来说会无法读取
\n代表换行
scanf(“%d, %d, %d”,&a,&b,&c); ←复合用法

三.循环与if else

(1)while

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main()
{
    int i=0;
    while (i<=100)
    {
        i++;
        printf("第%d",i);
        printf("次\n");
    }
    return 0;
}

结果:

1
2
3
4
5
6
7
8
9
10
11
第1次
第2次
第3次
第4次
第5次
第6次
第7次
第8次
第9次
(中略)
第101次

说真的 c语言和python蛮像哈?
下表显示了 C 语言支持的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:

运算符 描述 实例
+ 把两个操作数相加 A + B 将得到 30
- 从第一个操作数中减去第二个操作数 A - B 将得到 -10
* 把两个操作数相乘 A * B 将得到 200
/ 分子除以分母 B / A 将得到 2
% 取模运算符,整除后的余数 B % A 将得到 0
++ 自增运算符,整数值增加 1 A++ 将得到 11
自减运算符,整数值减少 1 A– 将得到 9

(2)if else与switch-case

以下两种代码实现的是一种功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main(){
    int type=0;
    printf("请输入1-5以内的数字来获取回应\n");
    scanf("%d",&type);
    if ( type==1 )
        printf("1");
    else if ( type==2 )
        printf("2");
    else if ( type==3 )
        printf("3");
    else if ( type==4 )
        printf("4");
    else if ( type==5 )
        printf("5");
    else
        printf("格式错误");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
int main(){
    int type=0;
    printf("请输入1-5以内的数字来获取回应\n");
    scanf("%d",&type);
    switch (type) {
        case 1:
        print("1");
        break;
        case 2:
        printf("2");
        break;
        case 3:
        printf("3");
        break;
        case 4:
        printf("4");
        break;
        case 5:
        printf("5");
        break;
        default:
        printf("格式错误");
        break;
    }

结论都是一样的

四、while和do while

(1)while

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(){
    int o=0;
    while ( o<10)
    {
        o++;
        printf("%d",o);
        printf("\n");
    }
}

简称来说就是当条件成立时 一直重复运行某物

输出:

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10

(2) do while

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main(){
    int i=0;
    do
    {
        i++;
        printf("%d",i);
        printf("\n");
    } while ( i != 10);
    return 0;
}

while的换了个顺序版本
结果都是一样的就不放出来了

五、整合一下先

(1)比大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main(){
    int a,b,c,max;
    printf("请输入三个数字 以逗号隔开\n");
    scanf("%d,%d,%d",&a,&b,&c);
    if(a>b){  
    max = a;
    }else{
    max = b;
    }
    if(c>max){
    max = c;
    }
    printf("max=%d", max);
    return 0;
}

输出:

1
2
3
请输入三个数字 以逗号隔开
3,1,6
max=6

(2)九九乘法表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
int main()
{
    int n=9;
    int i,j;
    i=1;
    while (i<=n)
    {
        j=1;
        while (j<=i)
        {
            printf("%d\*%d=%d",j,i,j\*i);
            if ((i\*j<10))
            {
                printf("   ");
            } else {
                printf("  ");
            }
            j++;
        }
        printf("\n");
        i++;
    }
    return 0;
}

输出:

1
2
3
4
5
6
7
8
9
1\*1=1
1\*2=2 2\*2=4
1\*3=3 2\*3=6 3\*3=9
1\*4=4 2\*4=8 3\*4=12 4\*4=16
1\*5=5 2\*5=10 3\*5=15 4\*5=20 5\*5=25
1\*6=6 2\*6=12 3\*6=18 4\*6=24 5\*6=30 6\*6=36
1\*7=7 2\*7=14 3\*7=21 4\*7=28 5\*7=35 6\*7=42 7\*7=49
1\*8=8 2\*8=16 3\*8=24 4\*8=32 5\*8=40 6\*8=48 7\*8=56 8\*8=64
1\*9=9 2\*9=18 3\*9=27 4\*9=36 5\*9=45 6\*9=54 7\*9=63 8\*9=72 9\*9=81