c语言file 数组的作用,C语言期末复习知识点总结

C语言期末复习知识点总结

发布时间:2018-06-05 18:17,

浏览次数:552

1. if()...

else if()... //当满足if的条件时将不再对else if进行判断和操作

2. 函数之间是平等的,在一个函数内部不能定义其它函数

3. 强制类型转换运算的优先级高于算术运算

4. 八进制前加0

5.      int a = 3;

int b = 2;

printf("%f", (float)(a+b) / 2);//输出2.500000

float的优先级高于/,不加括号先将(a+b)转化为%f,再/2

printf("\n%f", (float)((a + b) / 2));//输出2.500000

加括号后先进行(a+b)/2运算,得到2,进而转化为float类型

6.常量不能进行自加自减运算 4++ 是错的

7.不能用变量给数组定义大小int n=10;int a[n];不可

8.%u 格式为 unsigned int

9.全局变量与局部变量重名的情况下,在局部变量的作用范围内全局变量无效,非局部变量的作用范围内局部变量无效,全局变量有效。

10.静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。

静态局部变量是在编译时赋初值的,即只赋初值一次。静态局部变量只能被本函数引用,不能被其他函数引用。

对于全局变量,static的作用只是变量作用域的问题,其内存是在编译时就分配的,所以不加static也是采用静态存储

11.外部变量

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

当在变量定义点之前要引用该变量时,则在引用之前加extern关键字//当然也可把定义放在引用之前

2.将外部变量的作用域扩展到其他文件

在任一文件中定义外部变量,在另一文件中用extern关键字声明

12.变量仅在本文件中使用  static

13.函数

内部函数/静态函数:只能在本文件中调用 前加static

外部函数:在其他文件中可以使用,前加extern

14.编译预处理//在编译之前就进行预处理

1.宏定义

1.1不带参数的宏定义

#define 名字 替换文本

1.2带参数的宏定义

#define 宏名(参数表) 字符串//注意宏名和(参数表)之间不能有空格,否则认为是不带参的宏定义

[注]:对带参的宏展开只是单纯将宏名后面的实参字符串替代#define命令行中的形参

如:#define square(n) n*n

调用时s=square(a+1);//则效果为s=a+1*a+1//注意这里没有括号,函数的意思就已经变了。。。

所以定义宏时最好将 参数和宏体用括号括起来

2.文件包含处理

#include /"文件名"

3.条件编译(三种形式)

3.1    #ifdef 标识符//若标识符已被#define定义过,则对1进行编译

程序段1

#else        //else可无

程序段2

#endif

3.2    #ifndef 标识符//比第一种多了n,若标识符未被#define定义过,则对1进行编译

程序段1

#else

程序段2

#endif

3.3    #if 常量表达式

程序段1

#else

程序段2

#endif

15.指向函数的指针

类型标识符 (*指针名)();//注意(*指针名)的括号不能省,否则意思会变为返回值为指针类型的函数

函数名也相当于函数的入口地址

16.指向数组的指针是变量

数组名作为数组的首地址是常量

17.16位编译器下int占16位,即2字节

32位编译器下int占32位,即4字节

18.float 4字节 指数方式存储

double 8字节 指数方式存储

结构体变量在分配空间时,以成员变量中数据类型占用字节最多的字节单元数作为  存储单元

char a[10] 按char 1字节对待

当该存储单元中剩余的空间不足以存储下一个成员变量时 开辟新的一整个存储单元

***********结构体在内存中占用的空间*********

19.共用体变量占的内存大小等于所需内在最大的成员所占的内存

20.scanf输入字符串时遇到空格会认为字符串结束

解决方法:

char str1[255];

VC++用gets(str1)输入字符串

VS用gets_s(str1,255);输入包含空格在内的字符串

函数中判断字符串中空格的个数

while(*s!='\0){

if(*s==' ')

num++;

s++;

}

21.注意double类型的格式控制为%lf

22.C语言存放二维数组:行优先

存放二维数组

for(j=0;j<1024;j++)

for(i=0;i<1024;j++)

a[i][j]=0;列下标在外循环,可以保证程序访问内存的局部性,比较好

23#include

pow(x,3);///x的立方

fabs(x);//x的绝对值

exp(x);//e的x次方

log10x;

sqrt(x);//x的平方根

24.二维数组做函数参数时,必须指明列数;

因为二维数组在内存中按照行优先存储,如果不指明列数程序无法确认元素的位置

void Func(int array[3][10]);

void Func(int array[][10]);//第一维的长度可以省略,二者合法且等价

但是不能把第二维或者更高维的大小省略

void Func(int array[][]);//不合法!!!

25.文件操作:

fopen("文件名","文件打开方式");//打开文件

FILE *fp;//指向文件的指针变量并不是指向外部介质上的数据文件的开头,

而是指向内存中的文件信息区的开头

fp=fopen("文件

名","文件打开方式");

fclose(fp);//关闭文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值