文章目录
- 1、什么是C语言呢?
- 2、第一个C语言程序
- 3、数据类型
- 4、变量与常量
- 4.1变量的定义方法
- 4.2变量的命名规则
- 4.3变量的使用
- 4.4变量的作用域与生命周期
- 4.5常量
- 5.字符串+转义字符+注释
- 5.1字符串
- 5.2转义字符
- 5.3注释
1、什么是C语言呢?
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
张三说:这是什么啊,看不懂感觉好难。
C语言说:这些是一群科学家对我的定义,肯定要高大上,不然与他们的地位不匹配。后面你就会理解了,我是很厉害的哦。
张三说:所以你到底是什么东西,干什么的,我还是不知道。
C语言说:额。。。,好吧给你简单的介绍一下我自己。
C语言说:就像这个图片一样,我的诞生是为了让你们人类和计算机沟通,我是一门计算机语言。
C语言和我们学习的英语其实差不多,都是一种工具。选不同的工具与不同的事务进行交流
张三说:都是和同一个机器沟通,为啥有这么多语言呢?
这个等学习到后面你就会知道了。
C语言主要用于底层开发
2、第一个C语言程序
话不多说上程序。
#include<stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
想必学过C语言的,都知道这个程序吧。--------它是将hello world打印到屏幕上
其实不过是C语言,几乎学习所有语言的第一个代码都是打印hello world
尽管你所知道的大神,他们的第一步都是在屏幕打印hello world。
所以你离大神又进了一步哟,努力学习,你也会是大神。
简单解释一些这个代码,要想真的理解还有些路要走。
1、#include<stdio.h>这个叫做预处理。
我当时学C语言的时候就很难受,预处理是啥呀,有啥用啊。反正就是不理解,非要把它弄懂,结果浪费了一节课,没有听课,也没有弄懂,尽管有人给你解释了,你也理解不了,因为现在是自己啥都不知道,这种好奇心是好的,但是你要分时候。这个学到后面就理解了,现在不需要理解,只要记住写代码的时候必须加上它
2、int main()这个叫主函数
为啥叫mian(),有什么用?我赶紧去查一查。
我想说在学习一个新的语言刚开始的时候,不要抱有好奇心要有一颗接纳心
不管我能不能理解,我先把他记住,等到后面有一定的基础后,你可以有好奇心。
不要担心,学到后面你就会知道了,现在没有办法说,你现在只要记得,你写的程序要写在main()函数中,才可以被执行—目前先记住
一个项目只能有且只有一个main()函数
3、{
} 这个叫做代码块
上面代码中的{ },我们需要将我们的代码写在{ }内部,这个记住。
4、printf()----打印函数
这函数到底是是啥呀?怎么老说函数,我咋啥都不知道?
你不知道很正常,你现在连C语言的语法都不知道,肯定不知道是啥?
我告诉你们,你们可以将它们先记住,会用,后面学完C语言你们就知道这些都是干啥的了。
printf()函数的作用,是将括号内用引号引起来的东西打印到电脑屏幕上
5、rertrn 0 — 返回值
与int main()中的int对应,return 0,返回0,表示程序正常执行
我知道此时此刻,你们心中有一万个问号,但是你先将它藏在心里,不要去想。
我们前期学习第一门计算机语言的时候,应该先知道如何使用,再去研究原理,现在不要去管为什么,因为告诉你你也听不懂。
3、数据类型
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
//C语言有没有字符串类型?
不要看见这个就头疼,应该先去慢慢的记住他们。
我们已经知道printf()函数是将“ ”之间的内容打印到屏幕上
这里为什么打印的不是“%d\n”呢?而是数字
%d表示按整数打印,打印sizeof(“数据类型”) ---- 表示该类型的大小(单位是字节)
\n表示打印完一个后,换一行打印
C语言定义了许多的数据类型,数据类型又是什么呢?
这就好比数学中的数字吧,数学中有整数、小数、虚数等等
他们分别代表不同的意思
C语言中,也有许多类型 ----- 数据类型
char 就表示一个字符 表示‘ a’ ’ b’
short 表示短整型
整型我能理解,短整型什么意思
短就是它表示的整型范围比较小
假如你想表示100w,用short表示不了
用int就可以表示
当用int表示不了,就用long来表示
当用long表示不了,就用long long 来表示
他们可以表示整型
如何确定他们所能表示的的范围呢?为啥不直接用long long,这样就方便好多,只要是整数都可以?
先保留好自己的疑问,等在学学,你就不会再问了。
float表示单精度浮点数
double表示双精度浮点数
先不要管单精度、双精度。
浮点数,就是点(.)可以移动的数---->也就是小数。
这就是上面的那些数据类型的含义
同样,你们又有一万个问号,先忍忍,不要问。
4、变量与常量
生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
有些值是可变的(比如:年龄,体重,薪资)
不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。
4.1变量的定义方法
int age = 150; // int 表示数据类型 age表示变量名(可以自己命名) = 表示给这个变量赋值
float weight = 45.5f;
char ch = 'w';
4.2变量的命名规则
- 只能由字母(包括大写和小写)、数字和下划线( _ )组成。
- 不能以数字开头。
- 长度不能超过63个字符。
- 变量名中区分大小写的。
- 变量名不能使用关键字
//变量命中只能有字母,数字,下划线_
//*不能出现再变量命中
int ad* c = 10;//错误
//变量名不能以数字开头
int 3ad = 20;//错误
//变量名不可以超过63个字符
int sahjdksadadashakdhakjhdsjkdhajkshdakjhdajkhdajkdhasjkdh = 30; // 错误
//变量名区分大小写
int a = 10;
int A = 20;//这是两个变量,不是同一个
//变量名不可以用关键字
int int = 20//错误,int是关键字
关键字都有那些呢?
也就这么多,不需要去记,学着学着你就都知道了。
4.3变量的使用
#include<stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d%d", &num1, &num2);
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
scanf()是一个函数,表述从键盘输入并且存入后面的变量中。
scanf(“%d%d”, &num1, &num2);表示你从键盘输入两个整数,存入到num1和num2。(记得有&)
第一个存入num1,第二个整数存储到num2。
printf()也是一个函数,表示讲后面的内容输出到电脑屏幕上
printf(“sum = %d\n”, sum);遇到%d,以整数的形式将sum输出到屏幕上。(记得没有&)
4.4变量的作用域与生命周期
作用域:
作用域是程序设计概念,通常来说,就是一个变量可以有效使用的范围
1.局部变量的作用域:是变量所在的局部范围。
2.全局变量的作用域:是整个工程。
生命周期:
变量的生命周期是指从变量的创建到变量的销毁的一个时间段
1.局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束
2.全局变量的生命周期是:整个程序的生命周期
作用域与生命周期一个空间上的限制一个是时间上的限制,两个还是有区别的
int main()
{
int a = 10;
int i = 0;
for (i = 0; i < 10; i++)
{
int b = 0;
b = b + i;
}
}
例如上面的这个代码:
a 的作用域就在main函数中。
b 的作用域在for()循环中。
a 的生命周期是从int a创建开始,到出main()函数结束。
b 的生命周期是从int b创建开始,到出for()循环结束。
4.5常量
C语言的常量和变量的定义的形式有所差异
C语言中的常量分为以下几种:
- 字面常量
int main()
{
3.14;//字面常量
1000;//字面常量
}
- const修饰的常变量
int main()
{
//const 修饰的常变量
const float pai = 3.14f; //这里的pai是const修饰的常变量
pai = 5.14;//是不能直接修改的!(error)
}
这里的pai的值不可以改变,故拥有常量的属性。
但是它的本质仍然为变量
- #define定义的标识符常量
//#define的标识符常量
#define MAX 100
int main()
{
printf("max = %d\n", MAX);
return 0;
}
- 枚举常量
//举例
enum Sex
{
MALE,
FEMALE,
SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
printf("%d\n", MALE); //0
printf("%d\n", FEMALE); //1
printf("%d\n", SECRET); //2
//注:枚举常量的默认是从0开始,依次向下递增1的
retrun 0;
}
5.字符串+转义字符+注释
5.1字符串
“hello” 这里省略了’/0’
这里用双引号引起来的一串字符称为字符串字面值(字符串)
为什么第二个会输出烫烫烫呢?
这是由于printf在按照%s输出的时候,直到遇到‘\0’才停止。
而arr1中,默认在最后面加入了一个’\0’
而arr2中,没有加入’\0’,所以它所打印的是不确定的,直到遇到’\0’。
而arr3中,在数组中加入’\0’就好了。
5.2转义字符
如果我们要在屏幕上打印:c:\code\test.c
#include <stdio.h>
int main()
{
printf("c:\code\test.c\n");
return 0;
}
出现了这种结果,我们比较难理解,此时我们就需要去了解一下转义字符
转义字符:就是字符的意义改变了。
转义字符有哪些
转义字符 | 解释 |
---|---|
? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\’ | 用于表示字符常量’ |
\“ | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\t | 水平制表符 |
\r | 回车 |
\ddd | ddd表示1~3个八进制数字。如:\240 |
\xdd | dd表示2个十六进制数字。如:\x10 |
现在应该明白为啥打印出来和自己想的不一样了把。
正确代码
#include <stdio.h>
int main()
{
printf("c:\\code\\test.c\n");
return 0;
}
问题1:在屏幕上打印一个单引号’,怎么做?
问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?
#include <stdio.h>
int main()
{
//printf("%c\n",''');错误
//printf("%c\n",""");错误
printf("%c\n", '\'');
printf("%s\n", "\"");
return 0;
}
5.3注释
1.代码中有不需要的代码可以直接删除,也可以注释掉。
2.代码中有些代码比较难懂,可以加一下注释文字。
例如:
#include <stdio.h>
int Add(int x, int y)
{
return x + y;
}
/*C语言风格注释
int Sub(int x, int y)
{
return x-y;
}
*/
int main()
{
//C++注释风格
//printf("%d\n", Add(1, 2));
printf("%d\n", Add(1, 2));
return 0;
}
注释风格:
第一种:C语言风格注释/* xxxxxx */
有缺陷:不能嵌套注释
第二种:C++风格注释:// xxxxxx
可以注释一行也可以多行