C语言易错点

 

  • 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行的

 

posted @ 2015-03-12 15:52  carrot__lsp  阅读(1192)  评论(0编辑  收藏  举报