一、变量
概念:在程序运行中发生变化的量
定义格式:存储类型 数据类型 变量名
存储类型非特殊情况我们一般不写,此时默认为auto类型
int a; 定义一个int(整型)变量a
float b; 定义一个float(单精度浮点型)变量b
二、数据类型
名称 字节 取值范围(了解)
char 字符型 1字节 -2^7 ~ 2^7-1
short 短整型 2字节 -2^15 ~ 2^15 -1
int 整型 4字节 -2^31 ~ 2^31 -1
long 长整型 4字节 -2^31 ~ 2^31 -1
float 单精度浮点型 4字节 有效数据6-7位
double 双精度浮点型 8字节 有效数据15-16位
2.1变量分类
局部变量、全局变量的区别?(面试题)
局部变量 全局变量
定义位置: 函数体内部 函数体外部
初值: 未初始化时,值为随机值 初始化时,值为0
存储位置: 栈区 全局区
生命周期: 同函数体共存亡 同整个程序共存亡
作用域: 作用于函数体内部 作用于整个程序
2.2常量
概念:程序运行中不会发生变化的量
分类:
1)字符型常量:用’ '单引号括起来
‘a’ -> 字符a
a-> 变量
2)字符串常量:用" "双引号括起来
需要注意的是,在C中字符串结尾有一个用户不可见的‘\0’ 字符作为结尾标志,且占据一个空间大小,该标志我们在编程过程中经常作为一个判断条件使用。
"hello" --------->实际存储时,字符串后面有\0结尾,内部实际为'h' 'e' 'l' 'l' 'o' '\0'
sizeof("hello"); //此时我们如果使用sizeof()来获取字符串大小,所得的大小为6.
3)整型常量
int
4)浮点型常量
float / double
5)指数常量
3*10^8 ->3e8
2*10^-12 ->2e-12
6)标识常量
假设这么一个场景:你耗费了三天时间写了几千行代码,期间对一个变量a不断使用,但是突然客户告诉你这个变量的值需要改动,你会怎么做呢?
基础不牢,刚入门的程序员:手动改,一行行去查找这个变量a,对其赋值操作进行改动;
合格程序员:使用宏定义,只修改宏定义对应的值
正如上文所言,恰当的宏定义使用会使得编程过程极度舒适且方便于后期修正。
1)起标识作用
2)遵循标识符的命名规则
3)一般大写表示
格式:#define 宏名 常量或表达式
特点:只能单纯替换,不要进行手动运算(原样替换,替换完再计算)
#define N 2
#define M N+3
#define NUM N+M/2+1
void main()
{
int a = NUM;
printf("%d\n",a);
}
如上程序,其正确的运算过程应是2+2+3/2+1
三、初识函数
函数是指一段在一起的、可以做某一件事儿的程序。在C语言中,子程序的作用是由一个主函数和若干个函数构成。由主函数调用其他函数,其他函数也可以互相调用,其中同一个函数可以被一个或多个函数调用任意多次。
对于函数的学习方法,初学者应从三个方面下手,也就是我们常说的“函数三要素”。
所谓的函数三要素,即指一个函数的 功能 ,参数 ,返回值。
首先我们从输入输出函数开始认知:
1)按字符输入输出
int getchar(void);
功能:从终端输入一个字符
参数:无
返回值:输入字符的ASCII值
int putchar(int c);
功能:向终端输出一个字符
参数:c:要输出字符的ASCII值
返回值:要输出字符的ASCII值
2)按格式输入输出
int printf(const char *format, ...);
功能:按照指定格式向终端输出
参数:format:字符串 "hello world"
int scanf(const char *format, ...);
功能:按格式从终端输入
参数:同printf
返回值:正确输入数据的个数
当第一个数输入格式不正确时,会直接返回0
至此,已经讲解了C最为基础的输入输出函数,各位初学的读者在学习完该文章后可以思考:
1.如何以现今所学内容实现大小写字母的转换?
2.练习:一个水分子的质量约为3.0*10^-23g,1夸脱水大约有950g,
编写一个程序,要求输入水的夸脱数,然后显示这么多水中包含多少水分子。
表示:3.0e-23 打印格式:%f或%e