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”
如: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”
相关文章推荐
- 19、C语言和设计模式(桥接模式)
- c语言 伪 随机数 小结
- 使用c语言调用python小结
- C语言中实现两个数互换的方法小结。(欢迎补充)
- 在C语言中对utmp文件进行查找和写入操作的函数小结
- 黑马程序员——C语言之指针常用方法小结
- C语言:用递归函数DigitSum(n)实现输入1729,输出sum=1+7+2+9=19的值
- C语言return陷阱小结
- 【我解C语言面试题系列】003 死循环格式问题小结?
- C语言数组名及指向数组指针的小结
- C语言字符串几个常用函数小结
- 【C语言】文件操作小结
- C语言 数组基本知识小结
- C语言qsort和C++sort的用法小结和区别比较
- 黑马程序员——C语言总结--易犯错误小结
- Linux下C语言的几道经典面试题小结(分享)
- 黑马程序员-C语言printf和scanf函数中格式控制符使用小结
- C语言中EOF小结
- C语言的本质(19)——预处理之一:宏定义
- C语言单元小结(1)