程序的执行总是从main函数开始,在main函数结束。主函数一定要用main表示
1、C语言中的进制问题
C语言中常用的进制有:二进制、八进制、十进制、十六进制
表示方法如下:
二进制:0,1;八进制:0 ~ 7;十进制:0 ~ 9;十六进制:0 ~ 9,a(A) ~ f (F)
为了区分不同的进制,八进制前加0,十六进制前加0x
举例:8(十进制) 08(八进制) 0x8(十六进制)1000(二进制)
2、标识常量(宏)
宏的表示方法:#define 宏名 表达式
- 宏名一般用大写,小写也可以,主要为了和变量区分,所以用大写
- 宏后面没有分号
- 宏只是单纯的替换 案例代码如下:
#include<stdio.h> //#define 宏名 表达式 #define PI 3.1415926 //求圓的面积和周长 int main(void) { float r = 0; float l,s; //圆的周长 l=2 * PI * r; //圆的面积 s = PI * r * r; printf("圆的周长是%f,面积是%f\n",l,s); return 0; }
2.1宏函数(既有函数的特点又有宏的特点)
#define 函数名(形参) 函数体
案例:利用宏函数实现两个数求和
#include<stdio.h> //利用宏函数实现两个数的求和 #define 函数名 (形参) 函数体 #define ADD(a,b) a+b int main(void) { printf("%d\n"ADD(1,2)); return 0; }
3、初始化和赋值
初始化:在定义变量时对变量赋值。例如:int a = 10;//初始化
赋值:先定义一个变量,然后再赋值。例如:int a ,a = 10;//赋值
4、数组的全部初始化和部分初始化
(1)部分初始化:在部分初始化的时候,未初始化部分的值为0,因此可以利用这一特 点给数组中的元素清零
int a[5] = {1,2,3}; a[0] = 1,a[1] = 2, a[2] = 3,a[3] = 0,a[4] =0;
(2)全部初始化:int a[5] = {1,2,3,4,5};int a[ ] = {1,2,3};//元素的个数由后面具体赋值的 个数来决定
易错******:
1、int a[5];a[5] = {1,2,3,4,5}; //error
2、int a[5];a = {1,2,3,4,5};//error
3、int a[ ] = {0};//数组中只有一个元素,但是没有意义
5、static、register、extern、auto他们各自的特点及作用
1、static:(1)修饰的变量存储在静态区,既可以修饰局部变量也可以修饰全局变量
(2)static修饰局部变量,延长了局部变量的生命周期,如果局部变量没有初 始化,其值0,如果初始化只会被初始化一次。
(3)static修饰全局变量,只能在本文件内使用(限制了全局变量的作用域)
2、register:修饰局部变量,存储在寄存器中,建议将变量存储在寄存器中,可以提高程 序的运行速度,最终是否存储在寄存器中,取决于编译器,如果没有寄存 器,就存在栈区。
3、extern:修饰全局变量,存储在静态区。
4、auto:修饰局部变量,存储在栈区。
6、局部变量能否和全局变量重名?
能,局部会屏蔽全局。局部变量可以与全局变量同名,在函数内引用这个变量时,会用到 名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个 同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用 域就在那个循环体内。