变量、常量
生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
有些值是可变的(比如:年龄,体重,薪资)。
不变的值,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语言。