变量、常量
生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
有些值是可变的(比如:年龄,体重,薪资)。
不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。
定义变量的方法
C语言中使用变量之前要先定义变量。定义变量时要取一个独一无二的名字,同时还要声明变量中的要存放什么类型的数据。也就是说一个变量中只能存放一种与其相同类型的数据。
注意:定义整数数据类型的变量不能存放一个字符或者小数型数据。
int main()
{
int age;
age = 18;
float weight = 45.45f;
char ch = "a";
}
变量的命名规则
变量是通过变量名来区分的,但是也要遵循变量取名的规则:
- 不可以以数字开头
- 不可以包含特殊字符
- 不可以用关键字
- 不能操作63个字符
- 变量的命名区分大小写
注意: C语言中的所用关键字、标准库函数名和普通标识符都只用小写字母表示,而变量名通常用大写字母表示。
变量的分类
C语言中通常把变量分为局部变量和全局变量。
局部变量又称为内部变量,只能被内部引用,无法被其他对象或函数引用。
全局变量即外部变量,创建在函数的外部的变量,可以在程序的任何一个地方创建。它可以被程序中的任何函数或对象调用。
int age = 30;//全局变量
int main()
{
{
int age = 20;//局部变量
}
return 0;
}
当全局变量和局部变量相同时,局部变量优先。
变量的作用域和周期
要使用变量一定要清楚它的作用域和生命周期,只有这样才能程序如期运行。
作用域
变量的作用域指变量在程序中起作用的区域,可以理解为在{ }包围的区域。
在函数外部并且在程序入口(main函数)前面定义的变量,从声明位置开始,到程序结束都是起作用的,这样的作用域称为文件作用域。
- 局部变量的作用域是变量所在的局部范围。
- 全局变量的作用域是整个工程。
生命周期
变量的生命周期是指从创建到销毁的时间段。
- 局部变量生命周期:进入作用域生命周期开始,离开作用域生命周期结束。
- 全局变量生命周期:整个程序的生命周期。
常量
C语言中的常量和变量的定义形式有所差异。
常量分为以下几种:
- 字面常量
- const修饰的常量
- #define定义的标识符常量
- 枚举常量
#include <stdio.h>
//举例
enum Sex
{
MALE,
FEMALE,
SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
//字面常量演示
3.14;//字面常量
1000;//字面常量
//const 修饰的常变量
const float pai = 3.14f; //这里的pai是const修饰的常变量
pai = 5.14;//是不能直接修改的!
//#define的标识符常量 演示
#define MAX 100
printf("max = %d\n", MAX);
//枚举常量演示
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
//注:枚举常量的默认是从0开始,依次向下递增1的
return 0;
}
注意:还有一种常变量的说法,它既有常量的属性,但是本质还是变量。它不能作为数组的长度,但是以#define定义的常量可以作为初始数组的长度。
#define m 10
int main()
{
const int n=10;
char arr[n];//错误的定义
char arr1[m];//这个可以初始化数组的长度
}
字符串、转义字符和注释
字符串
"hello\n"
这种由双引号引起来的一串字符,称为字符串/
注意:字符串的结束标志是’\0’这个转义字符,在计算字符串的长度时候,不计算也不算做字符串的内容,他会自动生成。在输出的时候只有遇到这个转义字符才会停止输出。
#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
char arr1[] = "hai";
char arr2[] = {'h', 'a', 'i'};
char arr3[] = {'h', 'a', 'i', '\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
输出的内容:
从结果可以看出arr2输出的内容不确定,是因为没有确定转义字符’\0’的位置。
转义字符
假如我们要在屏幕上打印一个目录:c:\test\test.c
如果我们按照原提示打印如下:
int main()
{
printf("c:\test\test.c\n");
return 0;
}
实际上程序运行的结果:
这就不得不使用转义字符了,下面我们来看下转义字符。
转义字符 | 释义 |
---|---|
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\’ | 用于表示字符常量’ |
\“ | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进制符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | d d d表示1~3个八进制数字。 |
\xdd | d d表示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++注释风格
//int a = 10;
//调用Add函数,完成加法
printf("%d\n", Add(1, 2));
return 0;
}
注释有两种风格:
-
C语言风格的注释/xxxxxx/
缺陷:不能嵌套注释
-
C++风格的注释//xxxxxxxx
可以注释一行也可以注释多行
选择语句
每个人的人生都面临着好多的选择,我们程序通过特定的条件也可以实现这一功能。
#include <stdio.h>
int main()
{
int coding = 0;
printf("你会一直坚持下去吗?(选择1 or 0):");
scanf("%d", &coding);
if(coding == 1)
{
printf("坚持,你一定会成功\n");
}
else
{
printf("放弃,回家去种田\n");
}
return 0;
}
循环语句
循环就是日复一日,年复一年,做相同的事情,比如学习,就是每天都进行的。
那么在C语言中怎么实现循环呢?
- while循环语句:当条件成立时,重复操作,否则退出循环。
- do-while循环语句:重复操作,直到条件不成立时退出循环。
- for循环语句:用循环变量精准控制重复次数。
本篇博客主要介绍了变量、常量、字符串、转义字符、注释、选择语句和循环语句。下篇博客我会接着介绍函数、数组、操作符、常见的关键字、#define定义常量和宏、指针和结构体。希望我总结的内容可以帮助读者更好的学习C语言。