人们通过字符序列创建出的程序称为源程序(source program),用来保存源程序的文件称为源文件(source file)
c语言源文件的扩展名为“.c”
c语言中的()、{}、;等是用英文输入法输入的。
一、第一个C语言程序
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() //main叫主函数
{
printf("hello world\n");
return 0;
}
ctrl+F5:开始执行程序
代码详解:
main称为主函数,main函数是程序的入口
程序从mian函数的第一行开始执行
C语言代码中必须有主函数,但是有且仅有一个main函数

一个工程(项目)中可以有多个.c文件,但是多个.c文件中只能有一个main函数
一个工程多个.c文件是什么意思?----每个模块写不同的代码,比如add.c\sub.c\然后通过test()函数调用不同的模块
//旧式的写法,如今没有人这样写了!
void main()
{
printf("hehe\n");
}
int main(void) //void写到括号里表示:main函数不需要参数
{
printf("hehe\n");
return 0;
}
int main(int argc, char* argv[]) //main函数有两个参数,这两个参数有特殊意义。若此时不需要参数,写上也没关系。
{
printf("hehe\n");
return 0;
}
int - 整型 - 整数
mian前面的int表示:main函数调用后最终返回一个整型值0
printf - 打印函数,专门用来在屏幕上打印数据的,是C语言标准库中提供的一个库函数
printf函数可以在显示器上进行输出操作(末尾的f源自format(格式化)这个单词)。
如果想使用某个函数的功能,就必须通过函数调用(function call)来实现。
include 是包含的意思,下面的代码就是包含stdio.h这个头文件
#include <stdio.h>//stdio - standard input output 标准输入输出头文件
二、数据类型

小数在C语言里称为:浮点数(小数点可以浮动的数)比如66.8==6.68*101
转义字符:\n

这些数据类型有什么样的特点? 存放一个字符型数据需要多大空间?存放一个整型数据需要多大空间?
int main()
{
printf("%d\n", sizeof(char)); //1字节
printf("%d\n", sizeof(short)); //2字节
printf("%d\n", sizeof(int)); //4字节
printf("%d\n", sizeof(long)); //4字节 C语言标准规定:sizeof(long)>=sizeof(int)
printf("%d\n", sizeof(long long));//8字节
printf("%d\n", sizeof(float)); //4字节
printf("%d\n", sizeof(double)); //8字节
return 0;
}
sizeof 是一个操作符,是计算变量的大小的。

bit-比特位------------计算机中最小的单位
这段代码为什么有这么多的整型?
2个字节是16个比特位,16个比特位存放的数字应该有它的范围
2个比特位 十进制 4个比特位
00 0 0000 0
01 1 0001 1
10 2 0010 2
11 3 0011 3
0100 4
…
1111 15
2个比特位表示的范围是0-3, 4个比特位表示的范围是0-15,空间越大所表示的范围也就越大,能存放的数据也就越大。
有意义,对不同的数据采用不同的类型更合适。
short表示的范围:-32768~32767
int 表示的范围: -21亿 + ~+21亿
若想表示一个人的年龄用哪种数据类型合适?
年龄不会超过四位数,用short更合适,short占2个字节,更节省空间,空间利用率更高。而int,根本用不了这么大的范围,
数字里面既有整数,也有小数,所以引入浮点型。
有时候也要存放字符数据,所以引入字符型。

类型的作用是:为了创建变量。
int main()
{
char ch = 'w';//一个字符必须由两个单引号引起来;把字符w放入ch这个空间中;用字符类型创建1个变量,这个变量就像我们生活中的一个空间,1个字节的空间我们已经申请到了,用来存放w
printf("%c\n", ch);//%c - 打印字符
float weight = 75.5f; //若果不加f,编译器会默认为double类型,但是这个变量是由float类型创建
double pai = 3.14; //为什么显示3.14000000000?因为浮点数在内存中无法精确保存 ,后期会讲。
return 0;
}
三、变量和常量
生活中的有些值是不变的-----不变的值用常量来表示
有些值是可变的-------用变量来表示
为什么需要引入变量?如果遇到比较复杂的计算,为了在中途记录结果就需要使用变量。
变量其实就是用来放置数值和字符等的“盒子”。
在用来存放数值的魔法盒——变量中放入数值后,只要该盒子还在,值就会一直被保存,而且还可以自由地取出或替换数值。
要想使用变量,必须遵循一定的流程。
定义变量的方法:类型+变量名
int main()
{
int age = 18;
double salary = 20000.0;
//int m;//不给变量赋初值,不是好的习惯。因为变量本身存放着一堆垃圾数值
//printf("%d\n", m);//会报错:使用了未初始化的变量
int m = 0;//好的习惯是:在创建变量的同时给一个初始值
int n = 0;
printf("%d\n", m);
return 0;
}
变量的命名!!!
- 只能由字母(包括大写和小写)、数字和下划线(_)组成
- 不能以数字开头。
- 长度不能超过63个字符。
- 变量名中区分大小写。
- 变量名不能使用关键字。
int main()
{
//char C#B; char C* B;//错误
char CB = 'w';
//int 2b;//不能以数字开头
int _2b;
int age;
int Age;
int char;//err
return 0;
}
变量的分类
局部变量—放在大括号内部
全局变量—放在大括号外部
int a = 10;//全局变量:因为变量a是在大括号外部定义的,注意:定义两字
int main()
{
int b = 20;//局部变量:变量b是在大括号内部定义的
return 0;
}
int c = 100;//全局变量-----只关心“定义”在大括号内还是外,不关心前后。
int main()
{
int a = 10;//局部变量
printf("%d", a);
return 0;
}
int a = 10;//全局变量
int main()
{
printf("%d\n", a);
return 0;
}
int a = 10;
int main()
{
int a = 1;
printf("%d\n", a);
return 0;
}
//局部变量和全局变量名字冲突的时候,局部优先
//建议大家尽量不要冲突
变量的使用:哪里需要使用变量,就在哪里创建变量。
//写一个代码计算2个整数的和
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
//输入数据
scanf("%d%d", &num1, &num2);//scanf是一个库函数,可以从键盘接收数据。/&:取地址
sum = num1 + num2;//计算求和
printf("sum = %d\n", sum);//输出结果
return 0;
}
scanf是C语言提供的;scanf_s是vs提供的,在clang、gcc中不能识别。
scanf、strcpy、strcat 这些函数,VS都会提示不安全
为了能够正常使用,我们在.c文件的第一行,加上:#define _CRT_SECURE_NO_WARNINGS 1 就可以了
为了一劳永逸的解决以后的问题
我们可以在newc++file.cpp 这个文件中加入:#define _CRT_SECURE_NO_WARNINGS 1
以后新建的文件中都会自动加上:#define _CRT_SECURE_NO_WARNINGS 1
如何上传代码、开源仓库
gitignore:只上传.c文件和.h文件
git三板斧
git指南
本文介绍了C语言的基础知识,包括编写第一个C程序,数据类型的分类如整型、浮点数和字符型,以及变量和常量的概念。文章详细讲解了main函数的用法,不同类型的变量占用的内存大小,以及如何通过sizeof运算符获取数据类型所占的空间。此外,还提到了变量的声明、命名规则和作用域,以及输入输出函数printf和scanf的使用。
4004

被折叠的 条评论
为什么被折叠?



