1、C语言擅长什么?
c语言广泛应用于底层软件开发。单纯买一个电脑(硬件)是无法正常工作的,需要给它装操作系统(系统软件),操作系统通过驱动层的驱动程序(软件)操作硬件工作。在操作系统之上的应用层可装应用软件,而c语言是擅长写操作系统之下的底层(操作系统和驱动程序)。
2、ANISI C
美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。为所有人定制一个标准,让所有人交流起来时表达的意思更加准确。每隔几年就会更新一次,使用最广泛的标准是C89/C90。
3、C项目良好习惯
C语言项目中一般创建.c(源文件,函数实现)和.h(头文件,函数声明)
4、关于main函数
c语言代码是从主函数的第一行开始执行的,main函数是程序的入口。
一个工程中可以有多个.c源文件,但是在这多个.c文件中只能有一个main函数.执行性代码必须写在主函数内,变量的定义可以写在主函数外部。
5、库函数
库函数是已经写好的函数,这些函数的功能是简单而且又经常会用到的,所以当我们需要它的功能时可以直接调用,调用库函数时要包含对应的头文件。
6、数据类型
C语言提供的类型叫内置类型。我们也可以创造类型(即自定义类型)。数据类型是定义变量类型的。
char(1字节)
short(2字节)
int(4字节)
long(4字节/8字节)
long long(8字节)
float(4字节)
float weight=55.5f //加f就是明确告诉编译器这是个float型变量
double(8字节)
7、sizeof操作符
计算数据类型或者变量大小(单位字节)
8、输出函数的格式控制符
%u 以十进制形式输出无符号数
%d 以十进制形式输出有符号数
9、关于VS中scanf报错的问题
#include<stdio.h>
int main()
{
char arr[5];
scanf("%s",arr);//输入abcdefghijk
printf("%s\n",arr);//输出abcdefghijk,并出现越界访问报错。
return 0;
}
让scanf能在VS中正常使用的办法:
在VS中创建的.c文件其实是从newc++file.cpp文件中拷贝过来的。
用everything找到这个文件,把它复制到桌面,用vs将#define _CRT_SECURE_NO_WARNINGS 1
放到第一行,然后保存,再把桌面这个文件拖回原来文件所在位置,并替换掉原来的文件。
#define _CRT_SECURE_NO_WARNINGS 1类似于开头声明scanf是安全的。
10、局部变量
局部变量:定义在{}内部,作用域是变量最近的{}内。
11、全局变量
全局变量:定义在所有{}外,作用范围是整个工程。
全局变量使用起来方便,但是为了防止冲突和安全性,尽量避免定义使用全局变量
12、变量与全局变量名字相同冲突时,局部优先。
#include<stdio.h>
int a=1000;//全局变量
int main()
{
int a=100;//局部变量
printf("%d",a);
return 0;
}
- 这里不能理解为a变量被覆盖,本质上是main函数优先使用局部变量。
- 不建议把局部变量和全局变量的名字写成一样。
- 全局作用域中的a和main中的a可以同时存在,不会冲突并可以通过编译,因为不是同一个作用域。在main函数中访问a时,采用就近原则,因此访问的是main中的a,相当于将全局作用域中的a屏蔽了
13、extern
全局变量和函数都有外部连接属性,在其他文件用extern声明之后就能使用他们。
局部变量就没有外部连接属性,即使在外部文件用extern修饰它,外部文件中也不能拿来使用。
14、作用域
作用域表示变量起作用的范围,具体范围看变量在哪个(最近的){}内定义。
只要是在这个{}内,那这个变量就是存在的,出了{}后变量就会被销毁。
#include<studio.h>
int main()
{
{
int a=10;//只要放在大括号内部,就是局部变量。所以出了下一行的大括号范围变量a就会被销毁。
}
printf("%d",a);//变量a在这里就是未声明的标识符
return 0;
}
15、生命周期
指该变量存在的时间范围。
局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。
全局变量的生命周期:整个程序的生命周期。