您的位置:首页 > 编程语言 > C语言/C++

C语言笔记

2014-03-11 00:25 274 查看
条件编译:

一个.c文件对应一个.h文件:在.c文件里面具体的定义函数的功能,在.h文件里面声明.c文件里面的函数和定义一些全局变量。通常每一个.h文件的代码格式:(叫条件编译头文件处理,是为了防止一个头文件被重复包含,降低编译的出错率)

#ifndef _DEFINE_H

#define _DEFINE_H

······

#endif

特殊宏定义:

重新定义一些类型,防止由于不同平台的编译器的不同而产生字节数的不同,这样方便代码移植。关键字的改名称,一般是用typedef特殊宏定义,而不是#define。

格式:typedef unsigned char uchar;//一定要记得加“;”。

类型修饰符:

volatile:作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。简单地说就是防止编译器对代码进行优化。比如如下程序:

XBYTE[2]=0x55;

XBYTE[2]=0x56;

XBYTE[2]=0x57;

XBYTE[2]=0x58;

对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器却会对上述四条语句进行优化,认为只有XBYTE[2]=0x58(即忽略前三条语句,只产生一条机器代码)。如果键入volatile,则编译器会逐一的进行编译并产生相应的机器代码(产生四条代码)。

关键字:static

(1)作用于变量:在函数内部的话是局部变量,该变量的作用域局限于函数内部,但是跳出函数时不释放其占用的内存,因此有“记忆”功能;在函数外部的话,缩小外部变量的作用域,即从定义处开始往下的地方才可以使用,如果前面需要用到需要在使用前加extern的声明,同时该变量只局限于本文件中使用。

(2)作用于函数:对函数的连接方式产生影响,该函数只在本文件内部有效,对其他文件不可见。这样的函数又叫作静态函数。使用静态函数的好处是,避免与其他文件的同名函数产生干扰,也可以说是对函数本身的一种保护。

auto:在函数里面定义变量没有加auto或者是static时默认就是auto自动变量。自动变量只定义在函数内部。

字节数计算:sizeof( ),该函数在stdio.h中定义

sizeof(int);//这个函数的返回值是4

int a[8];   sizeof(a);//这时函数的返回值是4*8=32

数组:

二维数组:是以数组为数组元素的数组。数组的大小在编译其间就要确定大小,其实C语言只允许一维数组,但是它的元素可以是数组,当然这样就可以仿真出多维的数组了。

int week[7][24];

int *p,i;

p=week[2];  //切记week[2]在这里是表示地址

i=*(week[2]+1);  //等价于i=week[2][1];

sizeof(week[1])在这里的值是4x24,sizeof(week[2])也是一样的,这就说明元素week[i]是数组咯

指向数组元素的指针和指向数组的指针:对后者的理解:int (*p) [3];这就定义了一个可以指向整型的且包含3个元素数组。

return:一个函数中可以有多个return语句,但是函数只会执行其中的一个return语句,因为执行完这个语句就跳出了该函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: