admin 管理员组

文章数量: 1184232


2024年12月31日发(作者:display属性怎么用)

二级C语言模拟题2018年(100)

(总分100, 做题时间90分钟)

选择题

1.

下列关于栈和队列的描述中,正确的是______。

SSS_SINGLE_SEL

A 栈是先进先出

B 队列是先进后出

C 队列允许在队头删除元素

D 栈在栈顶删除元素

分值: 2.5

答案:D

[解析] 栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的一端

进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为

栈底。队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫

做队头,允许插入的一端叫做队尾。

2.

已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列

是______。

SSS_SINGLE_SEL

A ABCDE

B ECABD

C EACDB

D CDEAB

分值: 2.5

答案:C

[解析] 由于后序遍历的最后一个元素为E,所以E为根结点,所以它的前序遍

历的首个元素为E,故排除A和D选项。由于中序遍历中,元素B在元素根结

点E的后面,所以B为二叉树的右子树,并且该二叉树右子树只有一个元素,

所以前序遍历的最后一个元素应为B,故选项C为正确选项,即该二叉树的前

序遍历序列是EACDB。

3.

在数据流图中,带有箭头的线段表示的是______。

SSS_SINGLE_SEL

A 控制流

B 数据流

C 模块调用

D 事件驱动

分值: 2.5

答案:B

[解析] 数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一

般在旁边标注数据流名。

4.

结构化程序设计的3种结构是______。

A 顺序结构,分支结构,跳转结构

B 顺序结构,选择结构,循环结构

C 分支结构,选择结构,循环结构

D 分支结构,跳转结构,循环结构

分值: 2.5

答案:B

[解析] 程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足

以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按

结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作

的效率,降低软件的开发成本。

5.

下列方法中,不属于软件调试方法的是______。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

A 回溯法

B 强行排错法

C 集成测试法

D 原因排除法

分值: 2.5

答案:C

[解析] 软件调试主要采用以下三种方法:

强行排错法:作为传统的调试方法,其过程可概括为设置断点、程序暂停、观

察程序状态、继续运行程序。

回溯法:该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征

兆,确定最先发现“症状”的位置。

原因排除法:原因排除法是通过演绎和归纳,以及二分法来实现。

6.

下列选项中,不属于模块间耦合的是______。

SSS_SINGLE_SEL

A 内容耦合

B 异构耦合

C 控制耦合

D 数据耦合

分值: 2.5

答案:B

[解析] 耦合可以分为下列几种,它们之间的耦合度由高到低排列:

内容耦合——若一个模块直接访问另一模块的内容,则这两个模块称为内容耦

合。

公共耦合——若一组模块都访问同一全局数据结构,则称为公共耦合。

外部耦合——若一组模块都访问同一全局数据项,则称为外部耦合。

控制耦合——若一模块明显地把开关量、名字等信息送入另一模块,控制另一

模块的功能,则称为控制耦合。

标记耦合——若两个以上的模块都需要其余某一数据结构的子结构时,不使用

其余全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。

数据耦合——若一个模块访问另一个模块,被访问模块的输入和输出都是数据

项参数,则这两个模块为数据耦合。

非直接耦合——若两个模块没有直接关系,它们之间的联系完全是通过程序的

控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最

强。

7.

下列特征中不是面向对象方法的主要特征的是______。

SSS_SINGLE_SEL

A 多态性

B 标识惟一性

C 封装性

D 耦合性

分值: 2.5

答案:D

[解析] 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:

使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:标识

惟一性、多态性、封装性、模块独立性、继承和多态性好。

8.

在数据库设计中,将E-R图转换成关系数据模型的过程属于______。

SSS_SINGLE_SEL

A 需求分析阶段

B 概念设计阶段

C 逻辑设计阶段

D 物理设计阶段

分值: 2.5

答案:C

[解析] 逻辑结构设计的任务:概念结构是各种数据模型的共同基础,为了能够

用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,

这正是数据库逻辑结构设计所要完成的任务。它包括从E-R图向关系模式转换

和逻辑模式规范化及调整、实现。

9.

在一棵二叉树上,第5层的结点数最多是______。

SSS_SINGLE_SEL

A 8

B 9

C 15

D 16

分值: 2.5

答案:D

[解析] 根据二叉树的性质:二叉树第i(i≥1)层上至多有2

i-1

个结点。得到

第5层的结点数最多是16个。

10.

下列有关数据库的描述,正确的是______。

SSS_SINGLE_SEL

A 数据库设计是指设计数据库管理系统

B 数据库技术的根本目标是要解决数据共享的问题

C 数据库是一个独立的系统,不需要操作系统的支持

D 数据库系统中,数据的物理结构必须与逻辑结构一致

分值: 2.5

答案:B

[解析] 数据库设计的目的实质上是设计出满足实际应用需求的实际关系模型。

数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据

的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提

高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序

的开发和维护代价。

11.

以下关于C语言的叙述中正确的是______。

A 预处理命令通常位于函数体外面,但也可以位于函数体中间

B C语言中的变量定义须在其他语句之前

C 在C语言程序的书写中,一个语句必须单占一行

D 一个C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的

main函数

分值: 2.5

答案:A

[解析] 源程序中可以有预处理命令(include命令仅为其中的一种)。C语言中

的变量可以在使用之前的任何位置进行定义。C语言程序的书写中,多个语句

可以位于一行,但为了增强可读性,一般每行只有一条语句。一个C语言源程

序可以由一个或多个源文件组成,但仅可以有一个main函数。

12.

下列叙述中错误的是______。

A 用户所定义的标识符允许使用关键字

B 用户所定义的标识符应尽量做到“见名知意”

C 用户所定义的标识符必须以字母或下划线开头

D 用户定义的标识符中,大、小写字母代表不同标识

分值: 2.5

答案:A

[解析] 在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下

划线组成,并且第一个字符必须为字母或下划线,凡是要求标识符的地方都必

须按此规则命名。在C语言的标识符中,大写字母和小写字母被认为是两个不

同的字符。在选择标识符时,应注意做到“见名知义”,即选择具有一定含义

的英文单词或汉语拼音作为标识符,以增加程序的可读性。

13.

下列选项中可作为C语言合法常量的是______。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

SSS_SINGLE_SEL

A -80

B -080

C -8e1.0

D -80.0e

分值: 2.5

答案:A

[解析] 所谓常量是指在程序运行的过程中,其值不能被改变的量。在C语言

中,有整型常量、实型常量、字符常量和字符串常量等类型。选项B中是以0

开头,表示一个八进制数,而八进制数的取值范围是0~7,所以“-080”错

误;在C语言中e后面的指数必须是整数,因此选项C和D也不正确。

14.

下列定义变量的语句中错误的是______。

SSS_SINGLE_SEL

A int_int;

B double int_;

C char For;

D float US$;

分值: 2.5

答案:D

[解析] C语言规定,变量的标识符只能由字母、数字和下划线3种字符组成,

且首字符必须为字母或下划线。在C语言中大写字母和小写字母被认为是两个

不同的字符。选项A定义的变量标识符int和选项B定义的变量标识符int与

C语言的关键字int是不同的,是正确的变量标识。选项C定义的变量标识符

For与C语言中的关键字for是两个不同的标识符,所以选项C是正确的,而

选项D包含有特殊字符$,因而其不符合C语言的变量命名规定。

15.

下列关于函数的叙述中正确的是______。

A 每个函数都可以被其他函数调用(包括main函数)

B 每个函数都可以被单独编译

C 每个函数都可以单独运行

D 在一个函数内部可以定义另一个函数

分值: 2.5

答案:B

[解析] 在C语言中,函数定义是平行的,函数不能嵌套定义,即函数之间没有

从属关系。虽然函数之间可以相互调用,但main()函数不能被调用,选项A错

误:C程序从main()函数开始执行,当main()函数执行完毕时,整个程序就结

束了。C程序的执行必须从main()函数开始,选项C选项错误;函数不能嵌套

定义,选项D错误。

16.

当a=1、b=2、c=3、d=4时,执行下面程序段后,x的值是______。

if(a<b)

if(c<d) x=1;

else

if(a<c)

SSS_SINGLE_SEL

if(b<d) x=2;

else x=3;

else x=6;

else x=7;

SSS_SINGLE_SEL

A 1

B 6

C 3

D 2

分值: 2.5

答案:A

[解析] 本题考查的是if-else语句。第一个if语句,先判断条件,发现a<b

条件成立,执行下面的语句。第二个if语句,先判断条件,发现c<d条件成

立,执行下面的语句x=1。

17.

以下程序的输出结果是______。

#include<stdio.h>

main()

{ int a=4,b=3,c=2,d=1;

printf("%d",a<b?a:d<c?d:b);

}

SSS_SINGLE_SEL

A 1

B 3

C 2

D 4

分值: 2.5

答案:A

[解析] 条件表达式的格式为:"a?b:c",它的功能是:当a为真时,表达式的

值等于b的值;当a为假时,表达式的值等于c的值。因为条件运算符的结合

方向为“自右向左”。因此,当表达式中嵌套使用条件表达式时,应先计算右

边的条件表达式,再计算左边的条件表达式。

题中应先计算“d<c?d:b”的“d<c”关系表达式的值,因为“d=1<c=2”为

真,所以取第一个表达式的值,即d的值作为整个表达式的值。接着计算“a<

b?a:d”,“a=4<b=3”为假,取第二个表达式的值,即d的值作为整个表达式

的值。

18.

有以下程序

#include <stdio.h>

main()

{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0;

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

for(j=2;j>=i;j--)t+=b[i][j];

printf("%dn",t);

}

程序运行后的输出结果是______。

SSS_SINGLE_SEL

A 4

B 3

C 8

D 9

分值: 2.5

答案:C

[解析] 这道题主要考查的是二维数组的有关知识。在两层for循环语句中,累

加上三角元素,所以程序执行的过程为

“t=b[0][0]+b[0][1]+b[0][2]+b[1][1]+b[1][2]+b[2][2]=8”。

19.

以下程序:

#include<stdio.h>

main()

{ char str[10];

scanf("%s",&str);

printf("%sn",str);

}

运行上面的程序,输入字符串how are you,则程序的执行结果是______。

SSS_SINGLE_SEL

A how

B how are you

C .h

D how are you

分值: 2.5

答案:A

[解析] 当从键盘输入“how are you”时,由于scanf输入函数的特点是遇到

空格时结束读入字符,因此,该程序只将how这3个字符送到了字符数组str

中,并在其后自动加上结束符“0”。

20.

设变量x和变量y都是int类型,且x=1,y=2,则printf("%d%d",x,y,(x,y))

的输出结果是______。

SSS_SINGLE_SEL

A 1 2

B 1 2 2

C 1,2

D 输出值不确定

分值: 2.5

答案:A

[解析] 本题考查printf函数的格式和逗号表达式。printf函数在输出时,是

根据格式说明符的个数输出的,如果函数中有多余的项将不予输出:如果有输

出项少于格式说明符,则出错,不能输出正确的结果。

本题中逗号表达式(x,y)只返回y的值。此时格式说明的个数是2,而输出项

的个数是3,因此printf函数只输出前两项。

21.

以下程序的输出结果是______。

#include<stdio.h>

main()

{ int a=8,b=6,m=1;

switch(a%4)

{ case 0:m++;

break;

case 1:m++;

switch(b%3)

{ default:m++;

case 0:m++; break;

}

}

printf("%dn",m);}

SSS_SINGLE_SEL

A 1

B 2

C 3

D 4

分值: 2.5

答案:B

[解析] 本题考查switch语句。因为a=8,a%4=0,所以执行case 0后面的语

句,将m加1,遇到break语句跳出switch。

22.

定义如下变量和数组:

int i,x[3][3]={1,2,3,4,5,6,7,8,9};

则下面语句的输出结果是______。

for(i=0;i<3;i++)printf("%d",x[i][2-i]);

SSS_SINGLE_SEL

A 159

B 147

C 357

D 369

分值: 2.5

答案:C

[解析] 本题主要考查二维数组的使用。题中利用for循环来输出x数组中的指

定元素:①当i=0时,输出x[0][2]=3;②当i=1时,输出x[1][1]=5;③当

i=2时,输出x[2][0]=7。

23.

有下列程序段:

typedef struct NODE

{ int num; struct NODE *next;

} OLD;

下列叙述中正确的是______。

SSS_SINGLE_SEL

A 以上的说明形式非法

B NODE是一个结构体类型

C OLD是一个结构体类型

D OLD是一个结构体变量

分值: 2.5

答案:C

[解析] C语言允许用typedef说明一种新类型名,其一般形式为:typedef类

型名标识符。typedef语句的作用仅仅是使“标识符”来代表已存在的“类型

名”,并未产生新的数据类型。原有类型名依然有效。此题中,用typedef定

义了新的类型OLD结构,所以OLD为结构体类型。

24.

下列数组定义中错误的是______。

SSS_SINGLE_SEL

A int x[][3]={0};

B int x[2][3]={{1,2},{3,4},{5,6}};

C int x[][3]={ {1,2,3},{4,5,6}};

D int x[2][3]={1,2,3,4,5,6};

分值: 2.5

答案:B

[解析] 二维数组的初始化有以下几种形式:①分行进行初始化;②不分行的初

始化;③部分数组元素初始化;④省略第一维的定义,不省略第二维的定义。

在选项B中赋值号左边定义了一个2行3列的二维数组,而右边用3行2列的

数字进行赋初值。所以出现了边界的越界溢出错误。

25.

以下叙述错误的是______。

A 变量的作用域取决于变量定义语句的位置

B 全局变量可以在函数以外的任何部位进行定义

C 局部变量的作用域可用于其他函数的调用

D 一个变量说明为static存储类型是为了限制其他编译单元的引用

分值: 2.5

答案:D

[解析] 本题考查函数调用的变量作用域。全局变量不在任何函数体内定义,作

用域为整个文件;局部变量在函数体内定义,作用域仅为本次函数;static类

型是静态变量,为了方便其他编译单元的引用,不能随意改变。

一个函数包含两部分:函数首和函数体,函数体包括花括号内的所有语句。

26.

若定义函数int *func(),则函数func的返回值为______。

SSS_SINGLE_SEL

SSS_SINGLE_SEL

A 一个实数

B 一个指向整型变量的指针

C 一个指向整型函数的指针

D 一个整型函数的入口地址

分值: 2.5

答案:B

[解析] 本题考查函数返回值。fun函数的返回值类型为int*类型,即函数返回

一个指向整型变量的指针。

27.

若有定义int a[5],*p=a;则正确引用数组元素的是______。

SSS_SINGLE_SEL

A *&a[5]

B *a+2

C *(p+5)

D *(a+2)

分值: 2.5

答案:D

[解析] 本题考查通过指针引用数组元素。用指针引用数组有以下3种形式:

①“(p+n)与(a+n)”表示数组元素a[n]的地址;②“*(p+n)与*(a+n)”表示数

组元素a[n];③“p[n]=*(p+n)”,都表示数组元素a[n]。

选项A、B没有这种引用形式:选项C,“*(p+5)”是引用数组的第6个元素,

而数组一共有5个元素,出现越界;选项D,“*(a+2)”引用数组的第3个元

素。

28.

以下对C语言中联合类型数据的正确叙述是______。

A 定义了联合变量后,即可引用该变量或该变量中的任意成员

B 一个联合变量中可以同时存放其所有成员

C 联合中的各个成员使用共同的存储区域

D 在向联合中的一个成员进行赋值时,联合中其他成员的值不会改变

分值: 2.5

答案:C

[解析] 联合体的几个特点:①联合体所占用的内存空间为最长的成员所占用的

空间;②各个成员分量全部是从低地址方向开始使用内存单元;③联合体中的

空间在某一时刻只能保存某一个成员的数据;④联合体和结构体可以任意嵌

套。

29.

有以下函数定义:

int fun(double a,double b)

{return a*b;}

若以下选项中所用变量都已正确定义并赋值,错误的函数调用是______。

A if(fun (x,y)){......}

B z=fun (fun (x,y),fun (x,y));

C z=fun (fun (x,y)x,y);

SSS_SINGLE_SEL

SSS_SINGLE_SEL

D fun (x,y);

分值: 2.5

答案:C

[解析] 本题考查函数调用时的参数传递。选项C中第一个参数的表达式不正

确,因此不能得到正确的结果。

30.

执行以下语句段后,xy的值是______。

int*pt,xy;

xy=200;

pt=&xy;

xy=*pt+30;

SSS_SINGLE_SEL

A 200

B 170

C 260

D 230

分值: 2.5

答案:D

[解析] 本题考查指针的运用。通过pt=&xy,将pt指向xy所占的内存地址,

而*pt是指针pt所指向内存单元中的内容,即200,所以最后xy的值为230。

31.

下述程序的输出结果是______。

#include<stdio.h>

void main()

{ int a[20],*p[4];

int i,k=0;

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

a[i]=i;

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

p[i]=&a[i*i+1];

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

{ k=k+*p[i];}

printf("%d",k);

}

SSS_SINGLE_SEL

A 10

B 18

C 6

D 数组元素引用不合法,输出结果不定

分值: 2.5

答案:B

[解析] 第一个for循环,给数组a的20个元素分别赋值0~19:第二个for

循环,给数组p赋值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,

p[3]=a[10]=10;第三个for循环,将数组p中元素的值进行累加,

k=1+2+5+10=18。

32.

有以下程序:

#include <stdio.h>

#define N 8

void fun(int *x,int i)

{ *x=*(x+i)+1;}

main()

{ int a[N]={1,2,3,4,5,6,7,8},i;

fun(a,2);

for(i=0;i<N/2;i++)

{printf("%d",a[i]);}

printf("n");

}

程序运行后的输出结果是______。

SSS_SINGLE_SEL

A 1 3 1 3

B 3 2 3 4

C 4 2 3 4

D 1 2 3 4

分值: 2.5

答案:C

[解析] 函数“fun(int*x,int i)”的功能是把数组元素x[i]的值加1赋给

x[0]。所以在主函数中执行fun(a,2)后,数组元数a[0]的值等于4。然后在

for循环语句中,输出数组a中的前4个元素的值,分别是4,2,3,4。

33.

下面程序的输出结果是______。

#include<stdio.h>

main()

{ char a[]={"a","b","c","d","f","g"},*p;

p=a;

printf("%cn",*p+4);

}

SSS_SINGLE_SEL

A .a

B .b

C .e

D .f

分值: 2.5

答案:C

[解析] “*”号的优先级比“+”的优先级高,所以先执行“*p”;指针p指向

的是数组的首地址,因此“*p=a”,再加4得"e"。

34.

下面函数的功能是______。

sss(s,t)

char *s,*t;

{ while(*s);

while(*t)

*(s++)=*(t++);

return s;

}

A 将字符串s复制到字符串t中

B 比较两个字符串的大小

C 求字符串的长度

D 将字符串t续接到字符串s中

分值: 2.5

答案:D

[解析] 本题考查指针变量的运用。本题中的函数实质上是将字符串t续接到字

符串s中。

35.

下列程序的运行结果是______。

#include<stdio.h>

void sub(int*s,int*y)

{ static int m=4;

*y=s[m];

m--;

}

void main()

{ int a[]={1,2,3,4,5},k,x;

printf("n");

for(k=0;k<=4;k++)

{ sub(a,&x);

printf("%d,",x);

}

}

SSS_SINGLE_SEL

SSS_SINGLE_SEL

A 5,4,3,2,1,

B 1,2,3,4,5,

C 0,0,0,0,0,

D 4,4,4,4,4,

分值: 2.5

答案:A

[解析] 本题考查的是静态变量以及函数的实参与形参之间的地址值传递。

sub()函数中定义的变量m是一个静态变量,系统可为其分配固定的存储空间,

重复使用时,变量的值保留;所以当main()函数中的for循环中语句

“sub(a,&x)”;执行时,sub函数中m的值依次是4,3,2,1,0;因为变量x进

行的是地址值传递,所以最后依次输出的是数组a的元素a[4]、a[3]、a[2]、

a[1]、a[0]。

36.

设q1和q2是指向一个int型一维数组的指针变量,k为float型变量,下列

不能正确执行的语句是______。

SSS_SINGLE_SEL

A k=*q1*(*q2);

B q1=k;

C q1=q2;

D k=*q1+*q2;

分值: 2.5

答案:B

[解析] 本题考查指针变量的赋值操作。选项A是将指针q1和q2所指向的变量

值相乘,然后赋给k;选项B中,float型数据和指针型数据之间不能进行赋值

运算;选项C中,是两个指针变量之间的赋值;选项D中,是两个指针型变量

所指向的两个int型数据相加。

37.

下列程序的输出结果为______。

main()

{ union un

{ char *name;

int age;

int pay;

} s;

="zhaoming";

=32;

=3000;

printf("%dn",);

}

SSS_SINGLE_SEL

A 32

B 3000

C 0

D 不确定

分值: 2.5

答案:B

[解析] 本题考查的是联合体的有关概念。因为联合体是各个成员共享一段存储

空间,此段存储空间最终存放的是最后存入的成员的值,所以题目中输出

实际上输出了最后存入的3000,因为3000已经把原来存入的(32)

的值覆盖。

38.

以下有关宏替换的叙述不正确的是______。

SSS_SINGLE_SEL

A 使用宏定义可以嵌套

B 宏定义语句不进行语法检查

C 双引号中出现的宏名不替换

D 宏名必须用大写字母表示

分值: 2.5

答案:D

[解析] 本题考查宏替换的规则。宏替换有两类:简单的字符替换和带参数的宏

替换。使用宏应注意:①宏定义仅仅是符号替换,不是赋值语句,因此不做语

法检查;②为了区别程序中其他的标示符,宏名的定义通常用大写字母,但不

是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后

定义的宏中可以使用先定义的宏。

39.

有以下程序:

#include <stdio.h>

int b=3;

int fun(int *k)

{ b=*k+b;return(b);}

main()

{ int a[10]={1,2,3,4,5,6,7,8},i;

for(i=2;i<4;i++){b=fun(&a[i])+b;printf(%d",b);}

printf("n");

}

程序运行后的输出结果是______。

SSS_SINGLE_SEL

A 12 14

B 12 32

C 10 14

D 10 20

分值: 2.5

答案:B

[解析] i=2时,fun(&a[2])返回值是b=b+a[1]=3+3=6,b=b+b=6+6=12;i=3时,

fun(&a[3])返回值是b=b+a[3]=12+4=16,b=b+b=16+16=32。

40.

已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是

______。

A 一个整型变量,代表要读入的数据项总数

B 一个文件指针,指向要读的文件

C 一个指针,是指向的输入数据放在内存中的起始位置

D 一个存储区,存放要读的数据项

分值: 2.5

答案:C

[解析] 数据块输入/输出函数的调用形式为:fread(buffer,size,count,fp)。

fread函数参数说明:“buffer”是一个指针,对fread来说,它是读入数据

SSS_SINGLE_SEL

的存放地址;“size”是要读写的字节数;“count”是要进行读写多少个

size字节的数据项;“fp”是指文件型指针。

1


本文标签: 函数 变量 定义 结构 程序