1. 首页
  2. 文档大全

C语言-面试宝典.doc

上传者:蓝天 2022-06-27 17:13:51上传 DOC文件 95 KB
请简答一下常量指针和指针常量的区别?
常量指针
常量指针表示指针指向的数据是被const修饰的变量,其定义形式如下:
const指针类型*指针变量名;
指针类型const *指针变量名;
在上述格式中,在定义的指针数据类型前加const关键字,表明该指针指向的数据是只读的,不允许 通过该指针修改变量的值,而指针变量可以指向其他对象。示例代码如下:
int a = ljconst int b=2;const int* p = &a;
p = &b; 〃允许修改指向
*p = 2; 〃错误,不允许通过指针变量p间接修改变量a的值
指针常量
指针常量表示指针指向的地址不允许被修改,指针常量的定义形式如下:
指针变量类型*const指针变量名
在上述格式中,const放在指针变量名称前,修饰的是指针变量,指针变量的值不能被更改,但指针 变量指向的内存空间的数据可以被更改。
下列代码定义了一些指针常量,具体如下:
int a = l;int b = 2;int * const p = &a;
p = &b; 〃错误,不允修改指针的指向
*p=3; 〃可以通过指针变量p修改变量a的值
上述代码中,指向变量a的指针变量p被const修饰,表明指针p不能指向其他变量,修改指向是不 被允许的,但可以通过指针p修改变量a的值。
【问题扩展】
常量的常指针,意味着不能修改指针的指向,并且不能通过当前指针修改变量的值。常量的常指针定 义形式如下:
const指针变量类型*const指针变量
示例代码如下:
int a = l;int b = 2;const int * const p = &a;
*p = 3; 〃错误
p = &b; 〃错误
上述代码中既不允许通过指针p修改变量a的值,也不允许修改指针变量p的指向。
请阐述一下冒泡排序与选择排序的原理?
1.冒泡排序
在冒泡排序的过程中,以升序排列为例,不断地比较数组中相邻的两个元素,较小者向上浮,较大者 往下沉,整个过程和水中气泡上升的原理相似。接下来分步骤讲解冒泡排序的整个过程,具体如下。
第1步:从第1个元素开始,将相邻的两个元素依次进行比较,如果前一个元素比后一个元素大,则 交换它们的位置,直到最后两个元素完成比较。整个过程完成后,数组中最后一个元素自然就是最大 值,这样也就完成了第1轮的比较。
第2步:除了最后一个元素,将剩余的元素继续进行两两比较,过程与第1步相似,这样就可以将数 组中第2大的元素放在倒数第2个位置。
第3步:以此类推,对剩余元素重复以上步骤。
根据上述步骤,冒泡排序的流程可使用图1描述。
图1冒泡排序流程图(以升序排列为例)
定义一个数组:int arr[5]={9,8,3,5,2},以数组arr为例,使用冒泡排序调整数组顺序的过程如图2所
zK。
图2冒泡排序过程(以升序排列为例)
下面结合图6-10介绍数组arr排序过程。
第1轮比较中,第1个元素9为最大值,因此它在每次比较时都会发生位置的交换,最终被放到最后
1个位置。
第2轮比较与第1轮过程相似,元素8被放到倒数第2个位置。 第3轮比较中,第1次比较没有发生位置的交换,在第2次比较时才发生位置交换,元素5被放到 倒数第3个位置。
第4轮

C语言-面试宝典


文档来源:https://www.taodocs.com/p-690297598.html

文档标签:

下载地址