- C语言的缺点
- 由于C语言是面向过程的,因此它的数据封装性差、安全性低,这就是C语言和其他面向对象语言的区别之一。面向对象语言的特性之一就是数据的封装性
- 语法限制不严格,对变量的类型约束不严格,对数组下标越界不作检查等
- C语言的优点
- 对比汇编语言,C语言可读性好,易于调试、修改和移植,代码质量与汇编语言相当。
一、代码分析
1.C程序的源文件拓展名为.c
2.#include 是C语言的预处理指令之一,所谓预处理,就是在编译之前做的处理,预处理指令一般以 # 开头
3.一个C程序中一定会有一个main函数,也只能有一个main函数。main函数是整个C程序的入口。
二、开发和运行C程序的步骤
1.在编译前先执行#include指令,拷贝stdio.h的内容到源程序中
2.编译源程序,生成目标文件.obj
3.链接C语言函数库,生成可执行文件exec
4.运行可执行文件,在屏幕上输出"Hello, World!"
三、函数
1.在大型的C程序中,为了分模块进行开发,一般会将函数的声明和定义(即实现)分别放在2个文件中,函数声明放在.h头文件中,函数定义放在.c源文件中
四、print函数
五、不同编译器环境下基本数据类型的存储长度
* sizeof可以用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。
四、一维数组
* 定义的形式为:类型 数组名[元素个数]
int a[5];
* []只能放在数组名的后面,下面的都是错误写法:
int[5] a; // 错误
int[] b; // 错误
* []里面的个数必须是一个固定值,可以是常量(比如6、8)、常量表达式(比如3+4、5*7)。绝对不能使用变量或者变量表达式来表示元素个数,大多数情况下不要省略元素个数(当数组作为函数的形参和数组初始化时除外)
下面的都是正确写法:
int a[5]; // 整型常量
int b['A']; // 字符常量,其实就是65
int c[3*4]; // 整型常量表达式
下面的都是错误写法:
int a[]; // 没有指定元素个数,错误
int i = 9;
int a[i]; // 用变量做元素个数,错误
五.二维数组的初始化
* 按行进行初始化
int a[2][3] = { {2, 2, 3}, {3, 4, 5} };
* 按存储顺序进行初始化(先存放第1行,再存放第2行)
int a[2][3] = {2, 2, 3, 3, 4, 5};
* 对部分元素进行初始化
int a[2][3] = { {2}, {3, 4} }; int b[3][3] = { { }, { , , 2}, {1, 2, 3}};
* 如果只初始化了部分元素,可以省略行数,但是不可以省略列数
int a[][3] = {1, 2, 3, 4, 5, 6}; int a[][3] = {{1, 2, 3}, {3, 5}, {}};
有些人可能想不明白,为什么可以省略行数,但不可以省略列数。也有人可能会问,可不可以只指定行数,但是省略列数?
其实这个问题很简单,如果我们这样写:
int a[2][] = {1, 2, 3, 4, 5, 6}; // 错误写法
大家都知道,二维数组会先存放第1行的元素,由于不确定列数,也就是不确定第1行要存放多少个元素,所以这里会产生很多种情况,可能1、2是属于第1行的,也可能1、2、3、4是第一行的,甚至1、2、3、4、5、6全部都是属于第1行的