基本了解c语言的各种基础知识,对C语言有一个大概的认识
C语言:计算机编程语言,广泛应用于底层开发
先了解什么是计算机编程语言(计算机语言)
计算机语言:人和计算机进行交流的语言(C,C++,Java,Python,go)
上千种计算机语言,C语言是其中之一
C语言最早期标准:ANSI C
目前最常用标准:C89,,C90
一门语言有了国际标准才能走得长远
编译器主要有Clang(苹果), GCC(Linux), MSVC(VS 2019:集成开发环境), Turbo C。
VS2019-集成开发环境(IDE),集成了很多功能:
//打印hello
#include //头文件
int main()//所有标点注意为英文
{
printf("hello\n");
return 0;
}
写代码需解决生活中的问题,这些问题的解决需一些数据,从而进行计算。那么数据在C语言中如何表达呢?
为森么要写代码?为了解决生活中一些重复的问题,提升效率,C语言必须有能力描述我们的生活。
为了更好描述这些问题,C语言中引入了一些数据类型
数据类型 | 中文名称 | sizeof(操作符,计算变量大小) | 例子 |
---|---|---|---|
char | 字符数据类型 | 1 | ’t’,‘f’ |
short | 短整型 | 2 | 1011111111111111(最长16位) |
int | 整型 | 4 | |
long | 长整型 | 4/8 | |
long long | 更长的整型 | 8 | |
float | 单精度浮点型 | 4 | 2.9(一位小数) |
double | 双精度浮点型 | 8 | 8.88 |
单位均为字节 |
小数在C语言中为浮点数
C语言中,sizeof(long)>=int
int main()
{
printf(“%d\n",sizeof(int));//\n:换行
return 0;
}
%d:打印整数
%c:打印字符
char ch=‘w’;
int a=7777;
float weight=88.8f;
double ijh=2.99;
类型+变量名=值
变量名不可乱写
int m=0;//给其初始化
int m;;不是好的习惯,好的习惯是在创建变量时给一个初始值
如:double salary=200000.0;
不加f,则编译器默认其为double类型
int main()
int a=9
{
int a=2;
printf("%d\n",a);//输出的是2
return 0:
}
局部和全局名字冲突时,局部优先。建议不要冲突
哪里用哪里创建
//写一个代码,计算两数之和
#include
int main()
{
int num1=0;
int num2=0;
int sum=0;
//计算求和
sum=num1+num2;
//输入数据
scanf("%d %d",&num1,&num2);//scanf:库函数,可以从那个键盘接收数据
//输出结果
printf("%d\n",sum);
return 0;
}
结果出现错误时,要让这个描述失效的话在代码第一行使用==#define _CRT_SECURE_NO_WARNINGS 1解决
scanf是C语言提供的
scanf_s是VS提供的(只有VS认识这个函数)
与之类似的还有:scanf, strcpy, strcaty这些函数,VS都会提示不安全。为了能够正常使用,我们在此文件第一行加#define _CRT_SECURE_NO_WARNINGS 1==
我们可在newc++file.cpp这个文件中加入==#define _CRT_SECURE_NO_WARNINGS 1==以达成一劳永逸的目的。
作用域:程序设计中的一个概念。一般的,一段程序代码中所用到的名字并不总是有效/可用的。而限定这个名字的可用性的代码的范围就是这个名字的作用域。
int main()
{
{
int a=9;
printf("%d\n",a);
}
return 0:
}//运行正常,输出9
int main()
{
{
int a=9;
}//代码块:限定局部范围,局部区域。
printf("%d\n",a);
return 0;
}//运行错误
意思为这里就不可使用a,a只能在{}局部范围内内使用,出了{}用不了->作用域
哪里可以使用,哪里就是它的作用域。
#include
int g_a=2022;//定义
void test()//和主函数意思相同 4
{
printf("test:%d\n",g_a);// 5
}
int main ()// 1
{
printf("%d\n",g_a);// 2
test();//调用函数3
return 0;
}
代码必须放在函数内部,如printf("%d\n",a) 放在{}内。语法错误。
变量的声明和定义可放在函数外部,如int g_a=2022
程序从main函数开始执行
=
编译器对代码从上到下顺序扫描只需在第3行加上int g_a;(声明)即可
全局变量的另类用法
共2个文件
add.c定义了全局变量
想在test.c中使用此变量
可否跨文件使用? 答案: yes no
用extern声明外部符号,接下来的使用没有任何问题,可以使用
因此全局变量的作用域是整个工程
生命周期
变量的生命周期指的是变量的创建到变量的销毁的一个时间段。
a进入作用于创建,出作用域销毁(出作用域再把四个字节还给系统–回收了)。
int arr[10]={0};//此表达
int n=10;
int arr[n]={0};
上述❌,。应输入常量表达式
const int n=10;
int arr[n]={0};
编译器认为n是变量,但从语法上限制了变量,本质上还是变量。
#define MIN 9//一般放在全局范围内
int main()
{
int arr[MIN]={0};//有无这行代码都可运行。证明MIN是常量
printf(“min=%d\n”,MIN);
return 0;
}//输出9
数组:可以存放一组数字。存10个整型。int arr[10] //arr数组名字 //10:能放10个元素 //int:每个元素是整型
大小指定的时候,需要一个常量如10
4. 枚举常量 :一一列举。默认从0开始,以下依次增1
enum Color
{
RED,
GREEN,
BLUE//三个常量,整型,枚举类型Color的可能取值叫枚举常量
};//上述为创建的类型,相当于int,float,double.
int main()//通过类型创建变量
{
enum Color c=BLUE;
printf("%d\n",RED);//0
//RED=100//❌
return 0;
}
学习任何知识时,都需敞开心扉去接纳。爬坡时认为吃力,说明你在进步
声明和定义
int a = 10;
//定义创建一个变量,本身也是一种声明
使用局部变量时需赋一个初始值—>初始化
int a;
//声明
由双引号引起来的一串字符
结束标志:\0(转义字符)。在计算字符串长度时\0不做字符串内容
char ch=[3]={'a','b','c',};//数组。可以不指定大小,但一定要初始化。{}用来初始化字符
按Ctrl+F10进行调试
由图可知,字符串“abc”中隐藏放了\0,\0作为结束标志,但统计字符的个数不算\0.有4个元素
%s:打印字符串
#include
int main()
{
char ch1[] = { 'a','b','c' };
char ch2[] = "abc";
printf("%s\n",ch1);\\后面没有\0,因此打印随机值
printf("%s\n",ch2);
return 0;
}
#include
int main()
{
char ch1[]={'a','b','c'};//若要输出,输出结果为\0 ##
char ch2[]="abc";
int len=strlen(ch2)
printf("%d\n",len2);
return 0;
}//输出结果为3,字符串长度不算\0.
C语言提供了一个库函数可以计算字符串的长度strlen(string length)
strlen需要一个头文件
== 转义==:转变原来的意义
表示八进制用0开头.如088
表示十六进制数字用0x开头。如0x23\073:一个字符,表示一个分号
若想输出\t,则需要输入\t
==用\打败==
小练习
#include
int main()
{
printf("%d\n", strlen("abcdef"));//6
printf("%d\n", strlen("c:\test\628\test.c"));//14
return 0;
}
转义字符本来就是字符,只不过有特殊意义,算一个字符。
特殊的转移字符:\0。 ASC II值:0