好文档 - 专业文书写作范文服务资料分享网站

C语言基础知识大全电子教案

天下 分享 时间: 加入收藏 我要投稿 点赞

精品文档

>= 大于或等于 < 小于 <= 小于或等于 == 等于 != 不等于 关系运算符用于比较两个数值之间的关系,例如:a>3为关系表达式,大于号为关系运算符,当表达式成立时,“a>3”的值为“真”,当“a>3”不成立时,“a>3”的值为“假”。

其中应当注意的是关系表达式的返回值为整型值,而不是布尔型。表达式为真时返回值为1,表达式为假时返回值为0。

5. 逻辑运算符及使用方式(&&、||、!)

结果 a,b都为真则结果为真,否则为假 a,b至少有一个为真则结果为真,否则|| 逻辑或 a||b 为假 当a为真则结果为假,当a为假则结果! 逻辑非 !a 为真 其中应当注意逻辑或,例如a||b,当a为真时,C语言中直接跳过对b的判断,其返回值为“真”。

当一个表达式包括几种运算符时,则以运算符的优先级对表达式进行运算,表达式的优先级如下: 优先级 运算符类型 说明 1 初等运算符 ()、[]、->、. 2 单目运算符 !、~、++、--、*(指针运算符)、&(取地址运算符) 3 算术运算符 先乘除后加减 4 关系运算符 >、>=、<、<=、==、!= 5 逻辑运算符 &&、|| 6 条件运算符 三目运算符,例如?: 7 = 赋值运算符 8 逗号运算符 , 运算符 && 含义 逻辑与 举例 a&&b 6. 指针的概念与使用

1) 指针的定义

指针就是变量的地址,是一个常量。定义指针的目的就是为了通过指针访问内存单元。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。

指针变量定义的一般形式为: 存储类型 数据类型 * 指针变量名

收集于网络,如有侵权请联系管理员删除

精品文档

2) 指针变量运算符

1、取地址运算符:&

该运算符表示的是对&后面的变量进行取地址运算。

例:int a;

则 &a表示取变量a的地址,该表达式的值为变量a的首地址。 2、指针运算符:*

该运算符也称为“取内容运算符”,后面接一个指针变量。表示的是访问该指针变量所指向的变量,即访问指针所指向的存储空间中的数据。

例:int a=7; int *p; p=&a;

则 *p 表示指针变量 p 指向变量 a,即 *p 就是 a,所以 *p=7。 一个指针变量 p 在程序中通常有如下表示形式: p: 指针变量,它的内容是地址量;

*p:指针所指向的变量,是指针所指向的内存空间中的数据; &p:指针变量所占存储空间的地址; 【例1】分析程序的运行结果

源程序如下:

#include void Locate() {

int i_a;

int *pst_a;

printf(\请输入i_a的值:\scanf(\pst_a =&i_a;

printf(\的值为:%d\\n\printf(\的值为:%x\\n\printf(\的值为:%x\\n\printf(\的值为:%d\\n\printf(\的值为:%x\\n\printf(\

}

运行结果:

请输入i_a的值:3 i_a的值为:3 pst_a的值为:12fe8c &i_a的值为:12fe8c *pst_a的值为:3 &pst_a的值为:12fe80

以上实例中,12fe8c是pst_a的值,也就是i_a的地址;12fe80是pst_a的地址;两者有区别,不能混为一谈。

收集于网络,如有侵权请联系管理员删除

精品文档

3) 地址与指针的概念

指针可以有效地表示复杂的数据结构;动态分配内存;方便的使用字符串;有效而方便地使用数组;能直接处理内存地址。

如果在程序中定义了一个变量,在编译时就给这个变量分配内存单元。系统根据程序中定义的变量的类型,分配一定长度的空间。例如,一般微机使用的C系统为整形变量分配两个字节,为实型变量分配4个字节。内存区的每一个字节有一个编号,这就是“地址”,它相当于旅馆中的房间号。在地址所标志的内存单元中存放数据,这相当于旅馆中各个房间中居住旅客一样。

在程序中一般通过变量名对内存单元进行存取操作,这称作“直接访

问”,还可以采用 另一种“间接访问”方式,将变量的地址存放在另一个变量中。所谓“指向”就是通过地址来体现的,由于通过地址能找到所需的变量单元,我们可以说,地址“指向”该变量单元,因此在C语言中,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。一个变量的地址成为该变量的“指针”。如果有一个变量专门用来存放另一个变量的地址,则称它为“指针变量”。

4) 变量的指针和指向变量的指针变量

变量的指针就是变量的地址。存放变量地址的变量是指针变量,用来指向另一个变量。为了表示指针变量和它指向的变量之间的关系,用“*”符号表示“指向”。

定义指针变量的一般形式为: 基类型 *指针变量名; 5) 数组与指针

一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占有存储单元,它们都有相应的地址。指针变量也可以指向数组元素。 6) 空间操作函数malloc、free

C语言提供了两个函数,malloc与free,分别用于执行动态内存分配与释放。这些函数维护一个可用内存池。当一个程序另外需要一些内存时,它就调用malloc函数从内存池中提取一块合适的内存,并返回一个指向这块内存的指针。这块内存此时并没有以任何方式进行初始化,使用时需手动初始化。

这两个函数的原型如下所示,它们都在头文件stdio.h中声明。 void *mallloc(size_t size); Void *free(viod* pointer);

malloc的参数就是需要分配的内存字节数。如果内存池中的可用内存可以满足这个需要,malloc就返回一个指向被分配的内存块起始位置的指针,如果系统无法向malloc提供更多的内存,malloc就会返回一个NULL指针。

free的参数必须要么是NULL,要么是一个先前从malloc或其他空间申请函数返回的值。

malloc的一般用法

基类型*=(基类型)*Malloc(数量*sizeof(基类型));

收集于网络,如有侵权请联系管理员删除

精品文档

7) 动态数组

动态数组是指在声明时没有确定数组大小的数组,即忽略方括号中的下标;当使用时可用malloc语句重新指出数组的大小。使用动态数组的优点是可以根据用户需要,有效利用存储空间。动态数组的内存空间是从堆上分配的。是通过执行代码而为其分配空间。当程序执行到这些语句时,才为其分配空间。程序员自己释放内存。

遵循原则:

申请的时候从外层往里层,逐层申请; 释放的时候从里层往外层,逐层释放。 【例2】:一维数组的动态开辟与释放:

【例3】:二维数组的动态开辟:

7. 数组

数组是构造类型,是一组具有相同类型数据的有序集合。每个数据成为数组的元素,用一个统一的数组名和下标来唯一地确定数组中的元素。

收集于网络,如有侵权请联系管理员删除

精品文档

一维数组的声明方式为:

<类型标识符><数组名>[常量表达式]

类型标识符是任一种基本数据类型或构造数据类型;数组名由用户自定义,表示存储空间的地址;常量表达式表示数组元素的个数,也是数组的长度。

例:int a[6];表示一个整型、数组名为a、长度为6的一维数组。 (2)一维数组的引用形式: 下标法:数组名[下标]

例如:a[i];或p[i];a为数组名,p为指向数组的指针变量。

注:C语言中不能依次引用整个数组,只能逐个引用数组中的各个元素。下标就是被访问的数组元素在所定义的数组中的相对位置。下标为0表示的是数组元素在数组的第一个位置上,下标等于1表示的是数组元素在数组的第二个位置上,依次类推。例如:

int a[10];

a[0]=100;//正确

a[10]=100;//不正确,下标越界 例如: 下标法: int main() {

int a[10];

for(int i=0;i<10;i++) a[i]=2*i;

for(int i=0;i<10;i++) printf(“%d\\t”,a[i]); return 0; }

指针法:*(a+i)或 *(p+i);a是数组名,p为指向数组的指针变量。 例如: 指针法: int main() {

int *p=a; int i;

for(i=0;i<10;i++) a[i]=2*i;

for(i=0;i<10;i++)

printf(“%d\\t”,*(p+i)); return 0; }

二维数组的声明方式为:

<类型标识符><数组名>[常量表达式1] [常量表达式2]:

二维数组与一维数组的区别在于多出[常量表达式2]。[常量表达式1] 是第一维,常称为行; [常量表达式2]是第二维,也就是列。

收集于网络,如有侵权请联系管理员删除

9pfcx0czdq7px008twlp8xswm2yhdw015kp
领取福利

微信扫码领取福利

微信扫码分享