鹏哥C语言笔记,2026.4.30
一、printf函数,主函数main
1. 输出为danhuang
首先写头文件
#include <stdio.h>
- C语言中代码一定要有main函数,C语言规定main函数是程序的入口,必须有,但有且只有一个。
- 主函数
- 标准主函数写法如下
int main()
{
printf("danhuang\n");
return 0;
}
- 返回0(return 0)意味着返回整数,然而int为整型类型,所以达到前后呼应
- \n 代表打印后换行
- 双引号为字符,printf为库函数,专门用来打印数据
- ==使用库函数要打招呼,打招呼的方式为#include包含,包含一下<stdio.h>这个头文件,之后才可以正式使用printf这个库文件==
- std-standard标准的意思,i输入,o输出
- 如何运行代码:ctrl+F5
- Ctrl+F5运行,输出如下图
2. 把上面写的一段编成注释
选上这几行代码,点击上面栏中的注释选中行,取消就点隔壁那个有箭头的取消注释选中行。
3. 数据类型
- 代码
#include<studio.h>
int main()
{
printf("%d\n", 100);
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
}
==这里面把%d换成%zu其实更准确==
- 输出图片
- 数据类型介绍 ==chart---字符数据类型; short---短整型; int---整形; long---长整型; long long---更长的整形; float---单精度浮点数; double---双精度浮点数(精度高一点用double)==
4. 数据类型的作用
类型是用来创建变量的,创建变量的本质是【向内存申请空间】。
通过类型,给个名字(例如age),就可以创建一个变量,这样申请出了空间,就可以往该空间存放一定的数据,例如20(age=20)。
- 代码如下
#include<studio.h>
int main()
{
int age = 20;
double price = 66.6;
return 0;
}
2. 其他介绍
- %d代表按照整形的形式打印;sizeof代表尺寸,就是占几个字节
- 计算机中单位bit--比特位,byte--字节,kb--一千个字节,mb,gb,tb,pb;八个比特位为一个字节;kb为1024个字节;mb为1024个kb......
鹏哥C语言笔记,2026.5.1
一、变量和常量
常量,即不变的量,例如圆周率,性别,身份证号码,血型等等。 变量,即可以变化的量,例如年龄、体重、薪资。
1. 定义变量(创建变量)的方法
- ==类型是用来创建变量的,即写变量前要先写上类型。==
例如,我们要定义变量age为20,可以看到20是一个整数。符合整数的变量有:short短整型;int整形;long长整型。在这里20可以为short或int,所以用这两个变量哪一个都可以使用。
- ==具体代码如下==
#include <stdio.h>
int main()
{
short age = 20;
int high = 180;
float weight = 88.5;
return 0;
}
2. 变量的分类
- ==变量分为【局部变量】和【全局变量】==
- 什么是局部变量?是大括号里面的变量。
- 什么是全局变量?是大括号外面的变量。
- ==如下图代码,b为全局变量,a为局部变量。==
#include <stdio.h>
int b = 20;//全局变量b
int main()
{
int a = 10;//局部变量a
return 0;
}
- ==下图代码是否正确?==
#include <stdio.h>
int main()
{
int a = 10;//局部变量a
int a = 100;
return 0;
}
错误,错因为重复定义。在同一个范围内,代码只能定义一次。
- ==下图代码是否正确,输出什么?==
#include <stdio.h>
int a = 100;
int main()
{
int a = 10;
printf("a=%d\n", a);
return 0;
}
正确,且输出为10,括号里所定义的值。全局变量和局部变量名字相同时,输出局部优先。(但其实最好不要写成一样的)
3. 变量的使用
==题目一:写一个代码,计算任意两个整数之和==
- 先设置两个变量,并将它们初始化为零。
- scanf为输入函数,%d %d 表示输入两个整数,中间要空格。
- 两个整数一个放到num1中,一个放到num2中。
- 但是不能只写num1 ,num2。scanf需要地址,在变量前加上&表示取地址,如&num1。取地址后两个变量中间用逗号隔开。
- 两个变量要求和,令这个和为sum。然而sum这个变量还没有创建,写个int sum,创建完成。
- 输出sum。
-
==具体代码如下== #include <stdio.h>
int main() { int num1 = 0; int num2 = 0; scanf("%d %d", &num1, num2); int sum = num1 + num2; printf("%d\n", sum); return 0; }
1. 图中说"scanf不安全,建议替换为scanf_s替代。如果不想用scanf_s来描述(以为scanf_s非标准C语言函数,其他编译器不认识),请使用_CRT_SECURE_NO_WARNINGS"
2. 如何使用?只需要把“_CRT_SECURE_NO_WARNINGS”复制下来,粘贴到所有代码的最前面,也就是整个文件的第一行。所以最终第一行为#define+空格+复制的这一串。
- ==修改后代码如下==
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
scanf("%d %d", &num1, &num2);
int sum = num1 + num2;
printf("%d\n", sum);
return 0;
}
运行该代码,会跳出一空白框.空白是因为需要我们向里面输入求和的两个值。输入100 200(100空格200),回车键。
鹏哥C语言笔记,2026.5.2
一、变量的作用域
变量在哪里能起到作用,哪里就是它的作用域。
1. 局部变量的作用域
==一般为定义处的临近两个括号之间==
- ==代码示例一(在作用域内代码可运行)==
#include <stdio.h>
int main()
{
{ //作用域始
int a = 10;
printf("a=%d\n", a);
} //作用域终
return 0;
}
#include <stdio.h>
int main()
{
{
int a = 10; //作用域始
printf("a=%d\n", a);//变量作用域内
} //作用域终
printf("a=%d\n", a); //变量作用域外
return 0;
}
#include <stdio.h>
int main()
{ //作用域始
int a = 10;
{
printf("a=%d\n", a);
}
printf("a=%d\n", a);
return 0;
} //作用域终
因此,结合上面三个实例,不难看出,局部变量的作用域是有限的。 找到定义变量处,邻近的一对括号之间的范围就是该局部变量的作用域。
2.全局变量的作用域
==全局变量的作用域是整个工程。(全局变量哪里都能用,在整个工程里都可以用。)==
什么叫整个工程? 就是整个项目,该项目里面的多个文件之间可以同时用同一个全局变量。(只不过此时要加【extern int a;】声明)
- ==代码示例一==
#include <stdio.h>
int a = 10; //全局变量定义处
void test()
{
printf("test-->%d\n", a);
}
int main()
{
test();
{
printf("a=%d\n", a);
}
printf("a=%d\n", a);
return 0;
}
二、变量的生命周期
1. 局部变量的生命周期
==作用域始→作用域终。== ==(进入作用域,生命周期开始;出作用域,生命周期结束。)==
2.全局变量的生命周期
==整个程序的生命周期==
鹏哥C语言笔记,2026.5.3
一、常量
1. 字面变量
整型常量,浮点数常量,字符常量,字符串常量......
- ==代码示例如下==
#include <stdio.h>
int main()
{
30; //**整型**常量
3.14; //**浮点数**常量
'W'; //单引号括起来的是**字符**常量
"abc"; //双引号括起来的是**字符串**常量
return 0;
}
2.const修饰的常变量
- 可被修改的变量
- ==示例代码如下==
#include <stdio.h>
int main()
{
int a = 10;
a = 20;
printf("%d\n", a);
return 0;
}
1.如上可以发现,a是一个变量,原来定义的a=10可以被改变,改变后输出为20。 2.那如何使该变量不被改变呢?---使用const将变量变为常变量。
- 不可被修改的变量
只需要在“int a=10;”前面加const
- ==示例代码如下==
#include <stdio.h>
int main()
{
const int a = 10;
a = 20;
printf("%d\n", a);
return 0;
}
1.发现输出错误,错误原因如图,意思就是const指定的变量不可以被修改,此时就实现了变量不能被修改。也叫做常变量。 2.常变量到底是常量or变量?---本质还是变量,但是不能被修改,而“不能被修改”是一种常量的属性。
- 证明const修饰的常变量是变量
【1】利用数组 arr来证明。
【2】arr[ 10 ]------数组是一个连续的空间,10代表空间里面可以存放十个整型。
- ==示例一代码如下==
#include <stdio.h>
int main()
{
int arr[10] = { 0 };
return 0;
}
以上代码为正确代码。
【3】arr[ ]括号中只可以放常量,放变量就会报错
- ==示例二代码如下==
#include <stdio.h>
int main()
{
int n = 10;
int arr[n] = { 0 };
return 0;
}
【4】证明常变量是变量,即为证明const 修饰的常变量放到数组中会报错
- ==示例三代码如下==
#include <stdio.h>
int main()
{
const int n = 10;
int arr[n] = { 0 };
return 0;
}
- ==示例三报错如下==
报错原因如图,原因与【3】中一样。
可以明确的说明const修饰的常变量并不是常量。
3. define定义的标识常量
- ==示例一代码如下==
#include <stdio.h>
#define MAX 100
int main()
{
printf("%d\n", MAX);
int a = MAX;
printf("%d\n", a);
return 0;
}
- ==代码输出如下==
以上说明,MAX就是一个定义的标识常量。 标识常量(MAX)不仅可以被打印,还可以把它的值用来使用(a=MAX)。
- ==示例二代码如下==
#include <stdio.h>
#define MAX 100
#define STR "abcdef" //define一个字符串
int main()
{
printf("%d\n", MAX);
int a = MAX;
printf("%d\n", a);
printf("%s\n", STR); //%s是代表字符串
return 0;
}
- ==示例二输出如下==
以上说明,表示常量还可以是字符串,不一定非是整数。
- ==示例三代码如下==
#include <stdio.h>
#define MAX 100
#define STR "abcdef"
int main()
{
printf("%d\n", MAX);
int a = MAX;
printf("%d\n", a);
printf("%s\n", STR);
MAX = 200; //在这里改一下MAX值
return 0;
}
- ==示例三输出报错==
报错的原因为:该标识常量不能被改变。
4. 枚举常量
1. 枚举的关键字 enum
1.enum可以定义一个枚举类型。例如 enum Color,为枚举类型。 2.Color可能的取值为 RED,BLUE,GREEN,这三个颜色就是枚举常量。 3.类型是用来创建变量的,写了类型,我们还有创建一个变量c。 4.可以给c赋值,这个赋的值需要是枚举常量中的一个,例如c = RED 。
- ==示例代码如下==
#include <stdio.h>
enum Color //枚举类型
{
RED, //这三个就是枚举常量
GREEN,
BLUE
};
int main()
{
enum Color c = RED; //用类型创建一变量c,并赋值(类型给变量创建空间)
return 0;
}