汪道之

有人的地方就有江湖

0%

C语言复习

第一章

程序:是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。为实现预期目的而进行操作的一系列语句和指令。一般分为系统程序和应用程序两大类。 程序就是为使电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令的集合

软件:是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。

程序设计:给出解决特定问题程序的方法和过程,是软件构造活动的重要组成部分。程序设计过程应当包括需求分析-> 设计-> 编码-> 测试-> 维护五个阶段,并生成各种文档资料。

程序设计语言:用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成语言的各个记号之间的组合规律,但不涉及这些记号的特定含义,也不涉及使用者。语义表示程序的含义,亦即表示按照各种方法所表示的各个记号的特定含义,但不涉及使用者。语用表示程序与使用者的关系。

第四章

与字符有关的处理函数

strcat:字符串连接函数
strcpy:字符串拷贝函数
strcmp:字符串比较函数
strlen:字符串长度函数(实际长度)

第五章

指针

动态分配内存:char *text=(char*)malloc(50000*100);

解决了:

  • 数组空间大小不能适度改变的问题
  • 大数组导致栈溢出问题
  • 数组的使用范围问题–函数中定义的数组在函数外难于使用

交换两个结构的内容,直接交换指针

指针概念
  1. 按变量名访问存取变量的方式称为“直接访问”方式
  2. 通过一个变量(指针变量)访问另一个变量var的方式称为“间接访问”方式
  3. 指针变量(32位占4字节,64位占8字节)
指针变量的定义

使用指针前必须给指针变量赋初始值

指针运算
  1. 对指针赋值
  2. 地址运算&和内容运算*
  3. 加减,实际移动地址p±n*sizeof,以字节编址
  4. 比较
指针与数组

数组名就是一个指针常量

1
2
int arr[100];
则arr代表&arr[0]

访问数组元素:

  1. a[i]

  2. *(p+i)

  3. *(a+i)

  4. p[i]

获取数组元素个数:

1
size=sizeof(iarray)/sizeof(*iarray)//sizeof(数组)可以算出数组占用多少字节

三种存取结构成员的方式:

  1. myinfo.num
  2. (*p_info).num
  3. p_info->num

字符串指针

  1. 可以利用字符数组或字符指针代表一个字符串
    字符数组:(各元素值可以改变)

    1
    2
    3
    4
    char str[]="hello";
    scanf("%str",str);
    strcpy(str,"hello");
    str="love";//err

    字符指针变量:(元素值不可变)

    1
    2
    char *a = "hello"; 
    a="I love China!";

指针数组

数组中每一个元素都是一个指针

1
char *proname[]={"FORTRAN","C","C++"};

指针数组与二维数组相比是可以节约空间的

1
char name[3][8]={"FORTRAN","C","C++"};

第六章

函数

函数需要先定义,再调用

否则,需要对函数进行声明

程序空间分配:

程序代码(Code area)
全局数据,静态数据(Data area)
动态数据(heap area)堆区
局部数据(Stack area)栈区

变量的存储类型:

自动变量(auto):局部变量,存放栈区中
外部变量(extern):全局变量,存放于全局数据区,用之前需要用extern扩展到本源程序
静态变量(static):作用域与局部变量类似,但函数调用结束后其值得以保存,在多次函数调用中仅初始化1次
寄存器变量(register):只能用整型和字符型,超过的按自动变量处理
静态外部变量:静态外部变量的作用域是定义该静态外部变量的源程序文件,外部变量作用域是组成程序的所有源程序文件

函数与数组
  1. 数组元素作为实参使用(传数据值)
  2. 函数的形参和实参都是数组(传地址):实参是数组名,形参是数组。为同一数组。形参数组和实参数组的长度可以不相同,形参也可以不指定数组的长度,多维数组可以省去第一维数组长度
  3. 形参是指针,实参是数组(传地址值):传指针,一般还需要传处理数据的个数。例如指针作为形参,实参是数组名

函数与指针

  1. 返回指针的函数(指针型函数)

  2. 指向函数的指针(函数指针)

命令行参数

1
2
3
4
void main(int argc,char *argv[])
{

}

argc:参数个数,比实际参数个数多1

*argv[]:字符型指针数组,每个元素是指向参数(字符串常量)的指针