《C语言程序设计》基本知识点_第1页
《C语言程序设计》基本知识点_第2页
《C语言程序设计》基本知识点_第3页
《C语言程序设计》基本知识点_第4页
《C语言程序设计》基本知识点_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C语言程序设计》基本知识点*`void`表示函数无返回值。*参数列表可以为空,即无参函数。*函数声明:函数声明的作用是告诉编译器函数的返回值类型、函数名和参数类型,以便编译器在函数调用时进行检查。函数声明通常放在头文件中或源文件的开头,其形式与函数定义的首部基本相同,但需以分号结尾。4.2函数调用函数调用的一般形式为:`函数名(实参1,实参2,...)`。实参的类型、个数和顺序应与形参保持一致。函数调用可以作为一个表达式出现在允许的地方,也可以作为一条独立的语句。4.3参数传递C语言中函数参数传递方式为值传递。即实参将其值复制一份传递给形参,形参的改变不会影响实参的值。如果需要通过函数修改实参的值,应传递实参的地址(即指针)。4.4函数的返回值函数通过`return`语句返回一个值,其类型应与函数定义的返回值类型一致。无返回值的函数使用`void`类型,其函数体中可以省略`return`语句,或使用不带返回值的`return;`。4.5函数的嵌套调用与递归调用*嵌套调用:C语言允许在一个函数的函数体内调用另一个函数。*递归调用:函数直接或间接调用自身的过程称为递归。递归函数通常包含两部分:递归终止条件和递归调用语句。递归可以解决一些用迭代方法难以实现或实现起来不够简洁的问题(如阶乘、斐波那契数列、汉诺塔等),但需注意栈溢出的风险。五、数组数组是一组具有相同数据类型的元素在内存中连续存储的集合。5.1一维数组*定义:`类型名数组名[常量表达式];`,常量表达式指定数组元素的个数。*初始化:在定义数组时可以对其元素进行初始化。例如:`inta[5]={1,2,3,4,5};`。部分初始化时,未被显式初始化的元素会被自动初始化为零(全局数组和静态局部数组在未初始化时也会被自动初始化为零,局部自动数组未初始化时其值是不确定的)。*数组元素的引用:通过下标访问,形式为`数组名[下标]`,下标从0开始。5.2二维数组*定义:`类型名数组名[常量表达式1][常量表达式2];`,常量表达式1为行数,常量表达式2为列数。*初始化:可以按行初始化,也可以按元素顺序初始化。例如:`intmatrix[2][3]={{1,2,3},{4,5,6}};`或`intmatrix[2][3]={1,2,3,4,5,6};`。*数组元素的引用:`数组名[行下标][列下标]`。5.3字符数组与字符串*字符数组:用于存储字符序列,其定义和初始化与普通数组类似。例如:`charstr[6]={'H','e','l','l','o','\0'};`。*字符串:以空字符`'\0'`作为结束标志的字符序列。可以用字符串常量直接初始化字符数组,例如:`charstr[]="Hello";`(编译器会自动在末尾添加`'\0'`)。*字符串处理函数:C标准库提供了丰富的字符串处理函数,如`strlen`(求字符串长度)、`strcpy`/`strncpy`(字符串复制)、`strcat`/`strncat`(字符串连接)、`strcmp`(字符串比较)等,使用这些函数需要包含头文件`<string.h>`。六、指针指针是C语言的核心特性之一,掌握指针是深入理解C语言的关键。6.1指针的概念与定义指针是一个变量,其值为另一个变量的地址。指针变量的定义格式为:`类型名*指针变量名;`。`类型名`是指针所指向变量的数据类型,称为指针的基类型。6.2指针的运算*取地址运算(&):`&变量名`得到该变量的内存地址。*间接访问运算(*):`*指针变量名`得到指针所指向变量的值,也称为解引用。*指针与整数的加减:`p+n`表示指针p当前指向地址向后(对于正增长的地址空间)移动n个基类型大小的字节数。类似地,`p-n`表示向前移动。*指针的自增自减(++/--):指针向前或向后移动一个基类型大小的字节。*指针相减:两个指向同一数组的指针相减,结果为两指针之间元素的个数(有符号整数)。6.3指针与数组数组名代表数组首元素的地址,是一个常量指针。因此,可以将数组名赋给同类型的指针变量。通过指针可以方便地访问数组元素。例如:`inta[5],*p=a;`,则`p[i]`、`*(p+i)`、`a[i]`、`*(a+i)`都表示数组的第i个元素。6.4指针与函数*指针作为函数参数:可以将变量的地址传递给函数,使函数能够通过指针间接修改该变量的值,实现“引用传递”的效果(尽管C语言本质上只有值传递)。*函数返回指针:函数可以返回一个指针类型的值,即返回某个变量的地址。但需注意,不能返回指向函数内部自动变量的指针,因为函数调用结束后自动变量的内存会被释放。*指向函数的指针:函数名代表函数的入口地址,可以定义指向函数的指针变量,并通过该指针调用函数。七、变量的作用域与存储类别7.1作用域变量的作用域是指变量在程序中有效(可被访问)的区域。*局部变量:在函数内部或复合语句中定义的变量,其作用域仅限于定义它的函数或复合语句内部。*全局变量:在所有函数外部定义的变量,其作用域从定义处开始,到整个源文件结束。全局变量可以被其作用域内的所有函数访问。7.2存储类别存储类别决定了变量的存储位置(内存中的静态存储区或动态存储区)、生命周期以及初始化方式。C语言的存储类别关键字有`auto`、`static`、`register`、`extern`。*auto变量:默认的局部变量存储类别,存储在动态存储区,随函数调用而创建,函数返回而释放,未初始化时值不确定。*static变量:*静态局部变量:在函数内部用`static`修饰的变量,存储在静态存储区,其生命周期贯穿程序始终,但作用域仍局限于定义它的函数内部。只会被初始化一次。*静态全局变量:在全局变量前用`static`修饰,其作用域仅限于定义它的源文件内部,其他源文件不可见,避免了全局变量的命名冲突。*register变量:建议编译器将其存储在CPU寄存器中,以提高访问速度。通常用于频繁访问的变量。register变量是局部的,不能取地址。*extern变量:用于声明在其他文件中定义的全局变量或函数,以扩展其作用域。八、预处理指令预处理指令是在编译之前由预处理器执行的命令,以`#`开头,末尾不加分号。8.1文件包含(#include)`#include`指令用于将另一个源文件(通常是头文件`.h`)的内容嵌入到当前文件中。有两种形式:*`#include<文件名>`:用于包含标准库头文件,预处理器在系统指定的标准目录中查找文件。*`#include"文件名"`:用于包含用户自定义头文件,预处理器首先在当前目录查找文件,若找不到再到标准目录中查找。8.2宏定义(#define)`#define`用于定义宏。宏定义分为不带参数的宏和带参数的宏。*不带参数的宏:`#define宏名字符串`。在预处理阶段,宏名会被替换为对应的字符串。*带参数的宏:`#define宏名(参数表)字符串`。其替换过程是将宏调用中的实参字符串替换到宏定义字符串中对应的参数位置。带参数的宏在使用时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论