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

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

2018-06-05 18:17 537 查看
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
;不可
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<math.h>
  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);//关闭文件


阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: