C语言基础
关键字
不管是C语言还是Java,Python都有很多的关键字。那什么是关键字呢?在我看来,只是一些附有特定含义的单词。例如:int是定义整型变量,float是定义浮点型变量等等。
标识符
什么是标识符?标识符指的是一个名字,但是它和关键字不同。关键字int,float,char等等是用来定义标识符的,也就是说标识符可能是变量也可能是常量,也可能是方法名,函数名,数组名。
C语言标识符的特点:
1.必须以字母和下划线开头:
int m21;该语句正确
int 666e;该语句不正确
2.C语言的标识符可以有三个元素:下划线,字母,数字。但是开头必须是字母或下划线
3.C语言中标识符的字母大写和字母小写并不一样。例如:
int E1;
int e1;这两个语句定义的是两个不同的标识符。
也就是说只要有一项是不同的,则该标识符不同。
4.标识符不能是关键字
int float;该语句是错误的,因为float是关键字
int Float;该语句是正确的,因为Float不是关键字
5.标识符的定义最好是相关意思(这个不必须,不过是一个合格程序员的标准)
比如要定义一个学生姓名的变量,我们可以:
char StudentName;相对规范
而定义成char YUJ;使人摸不到头脑,不过在编程法则中不算错。
注意,初学者在打代码时一定要注意中英文切换和大小写问题,我在刚学C语言时就总犯大小写不一致或符号是中文符号的错误。
数据类型
在C语言有不同的数据类型,不同的数据类型有不同的存储空间,
int a; //a是整型变量
float b; //b是浮点型变量
char c; //c是字符型变量
以上是基础数据类型
第二种是构造类型,构造类型分为三个部分:数组类型,结构体类型,共用体类型。
int array[5]; //数组
struct Student student; //结构体
union season s; //共用体
第三种是指针类型,指针类型和其他类型不同,它的特殊性在于指针的值表示的是某个内存的地址
第四种是空类型,空类型的关键字是void,它的作用是对函数返回的限定和对函数参数的限定。
当函数不必返回一个值时,就可以设置空类型的类型。
常量
所有的常量可以分为三类:
数值型常量:整型常量和实型常量。
字符型常量
符号常量
什么是整型常量
整型常量是直接使用的整型常数,例如:5,6,100.
整型常量分为:长整型,短整型,无符号整型,符号整型
无符号和符号整型好说,无符号就是没有符号只比较数值,而有符号就是不光比较数值,还要比较符号。
同时整数类型可以使用三种进制来表示:八进制,十六进制,十进制。(三者在计算机系统基础或计算机组成原理会讲到)
实型常量
实型常量也成为浮点型常量,可用整数和小数来表示,例如5.80,3.96等等
正常实型常量使用十进制来表示,就是5.65
有的实型常量使用指数方式(科学计数法)来表示,例如a=1.235e3,则a就是1235.那个e3就是10的3次方。
而且可以在编写实型常量时在最后加上F,用于表示单精度的实型常量。
字符型常量
字符常量
字符常量指的是用单引号圈起来的单个字符,字符常量可通过putchar()方法进行输出
#include<stdio.h>
int main()
{
putchar('F');
putchar('I');
putchar('N');
putchar('E');
}
它的输出结果就是FINE。
但是字符常量不能用三个单引号圈起来,因为系统不知道从哪里开始也不知道从哪里结束。
注意:1.字符常量‘a’和‘A’是不相同的
2.字符常量只能有一个字符,‘a’是可以的,‘ABV’是不可以的,这属于字符串常量
3.单引号不属于字符常量的一部分,属于定界符
字符串常量
字符常量:‘a’
但是字符串常量可以有多个字符:“WWWW”
如果字符串常量中一个字符都没有,则该字符串常量为空字符串,例如“”
字符串常量是用双引号括起来的
C语言在存储字符串常量时,会在字符串的末尾加一个\0,所以我们平时编写字符串常量时不需要再对字符串常量后面加\0。
#include<stdio.h>
int main()
{
printf("渴望称为专家\n");
printf("hope to be stronger\n");
}
在上述例子中,printf()语句中的汉字和英文都属于字符串,里面的\n是转义字符,用于回车
总结字符串常量和字符常量的区别
1.字符串常量使用双引号圈主的,字符常量是用单引号圈住的
2.字符串常量可以有0个或多个字符,而字符常量只能用一个字符
3.字符串常量在进行储存是会在末尾加上\0,而字符常量不会
注意,字符串常量可以有0个字符,但是字符串常量‘a’的长度不是1,是2,因为还有一个\0
转义字符
转义字符 | 作用 |
---|---|
\n | 回车换行 |
\t | 横向跳到下一制表意义 |
\b | 退格 |
\r | 回车 |
\f | 走纸换页 |
符号常量
在开始时定义的常量即为符号常量,格式为:#define A 100 这就是使A的值为100
下面看一个例子
#include<stdio.h>
#define P 3.14
int main()
{
double a;
double b=0;
printf("输入圆的半径:\n");
scanf("%lf",&a);
b=a*a*P;
printf("圆的面积为:\n",b);
}
我定义了一个符号常量P的值为3.14,实现了求圆的面积。
变量
整型变量
整型变量有基础整型变量,长整型变量,短整型变量。并且每个都有两种:有符号和无符号。
大致一算是六种,但我们通常说的是有符号基本整型int
给long赋值时必须有L或l,否则报错:
long a = 2312312321*1231232131;//错误
long b = 2312312321*1231232131L;
并且编写程序时,应该在赋值变量之前定义变量。
实型变量
和实型常量一样,实型变量是要有整数和小数,并且也叫浮点型变量
单精度类型的关键字为float,在内存中占四个字节,在赋值单精度变量时应该在赋值的数后面加f,否则就是双精度。
双精度类型的关键字是double,在内存中占8个字节,
字符型变量
字符型变量主要是储存字符常量的变量,而且存储的是字符常量的ASCII的值存储到存储单元中
#include<stdio.h>
int main()
{
char C1;
char C2;
C1='a';
C2=97;
printf("%c",C1);
printf("%c",C2);
}
虽然C1=‘a’,C2=97,但是最后的结果都是a,所以告诉我们存储的ASCII码。
变量的存储类别
static变量是静态变量
static定义的变量在语句执行期间会保持原有的值,但是初始化操作只在第一次执行时起作用,变量保持上一次执行的值。
#include<stdio.h>
void park()
{
static int a=80;
a=a-1;
printf("%d",a);
}
void main()
{
park();
park();
park();
park();
}
他是运行了一次后就将那次a的值赋值为a,再一直继续。
extern变量
extern变量为外部存储变量
用处就是如果在其他文件定义了一个变量。可以用extern int 那个变量 从而将那个变量的值直接调用到这个文件中。