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

19、C语言小结

2013-06-06 18:17 274 查看
一:指数的表示形式

如:12.34*103  在C语言中用这种表示:12.34E3 或者12.34e3;

二、字符常量

字符常量一定是用单撇号括起来的  ‘’,且在存储单元中存储的是

ASCII码值其实也是一个对应的整数值。

三、转义字符

\n:换行,将光标切换到下行的开头

\r:回车,将光标切换到本行的开头。

\数字:对应的八进制数,最多三个数字

\x数字:对应的十六进制数,数字可多个

四、标识符

  变量名,函数名等。

五、char字符型

实际上是一个”一个字节”的整数型,

unsigned char 0~255

signed char -128~127

只不过0-127有对应的ASCII码。

注意:getchar()可从输入设备中获得一个无法显示的字符,如回车等。

六、逻辑表达式的执行(a&&b||c)

并不是所有的逻辑运算都被执行,只有在必须执行下一个逻辑运算表达式,

才能求出表达式的解时,才执行该逻辑运算符。

bool类型,存在stdbool.h文件

七、switch

switch(变量)

{

case   值:

break;

}

变量只能整数类型变量或者字符型

值只能是常量

多个case可以共用一组执行语句。

如:

case 1:

case 2:

printf(“int”);

break;

八、for语句的条件表达式,可以有多个

for(初始化;条件表达式;语句3)

九、一维数组和多维数组

数组的定义和初始化时,可以省略第一维的长度,

但不可以省略其它维的

如:

int a[][4]={{24,5},{6},{4,6,5},{0}}

十、字符数组

如:char c[10];

未初始化时,数组的各元素的值不确定。但不代表全为 \0

字符数组和字符串的结尾都是    \0

,所以在使用字符数组时,应记得主要在有效字符后面的一个元素赋值\0。

且数组的有效长度只是到\0结束前一个元素。

strlen(字符数组名);

十一、scanf函数和gets函数

scanf 读取输入直到遇到第一个空白符结束,(空格或者回车)

gets  读取输入直到遇到第一个回车结束,可接受空格字符,

十二、用数组名作函数参数

形参数组,并不需要指定数组的一维长度,因为编译系统不查检形参数组的

大小,只是将实参数组的首地址传给形参数组名。所以就算指定一维长度,

也起任何作用。

十三、变量存储类型和生存周期、作用范围

注:程序的编译单位是源程序文件,

按作用范围分类:

局部变量:在函数内定义的,且只在函数内部才可见,

全局变量:也称外部变量,函数外定义的,从定义处直到文件结束,

均可见。(习惯首字母大写)

变量的存储方式(内存中):静态存储和动态存储

分别存放在静态存储区和动态存储区(堆)。

静态存储方式:运行期由系统分配固定的存储空间,并且直到程序结束

才释放。

动态存储方式:运行期间由系统根据需要进行动态的分配存储空间,

并在出了有效作用范围时,收回内存空间。

在C语言中,每一个变量和函数都有两个属性:数据类型和数据的存储类别

C的存储类别:4种

自动的(auto)

                         静态的(static)

寄存器的(register)

外部的(extern)

局部变量的存储类别:

1、自动局部变量  默认

auto 修饰,默认的局部变量类型。

动态分配:存储在动态存储区中,出了作用范围后,内存回收。

2、静态局部变量(static )

static修饰,如:static int a;

静态分配:存储在静态存储区中,内存不释放,值在出了函数后

,并不改变,保持原值,而且在整个程序运行过程中,

只有一次赋值。无论函数调用多少次,都只有一次。

3、寄存器局部变量

register 修饰,

存储在CPU的寄存器中。

 

全局变量的存储类别:

全部存放在静态存储区中。

全局变量的作用域的扩张及限定。

1、在一个文件内扩展外部变量的作用域

int main()

{

    extern A,B,C;

    printf("A=%d,B=%d,C=%d \n",A,B,C);

 

    return 0;

}

int A=10,B=10,C=10;

2、将外部变量的作用域扩展到其它文件中去。

在file2.h中:

#include <stdio.h>

#include <stdlib.h>

extern A,B,C;

int main()

{

 

    printf("A=%d,B=%d,C=%d \n",A,B,C);

 

    return 0;

}

 

在file1.h文件中:

int A=1,B=10,C=10;

注意:在编译时遇到extern时,先在本文件中寻找外部变量的定义,

再在连接时,从其文件中找外部变量的定义,有时候为了防止,

外部变量的二义性,可以将外部变量的作用范围限制在本文件当中。

3、将外部变量的作用域限制在本文件中。

在定义时只需要在前面加上 static 

全局变量都是在编译时分配内存存储空间的。

十四、内部函数和外部函数(函数作用域的扩张和限定)

默认为外部函数

1、将本文件的函数扩张到其它文件:

file1.c文件

#include <stdio.h>

 int getMax(int a,int b)

{

    return (a>b)?a:b;

 

}

file2.c文件

#include <stdio.h>

#include <stdlib.h>

extern int getMax(int,int);

int main()

{

 

    printf("max=%d \n",getMax(10,9));

 

    return 0;

}

2、将本文件的函数限制在本文件中使用:

改成:

static int getMax(int a,int b)

{

    return (a>b)?a:b;

 

}

这种情况如果还想用这个函数,可以在file2.c文件中,使用#include “file1.c”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: