问答题
阅读以下说明、C程序代码和问题1至问题3,将解答写在对应栏内。
[说明1]
设在某C系统中为每个字符型数据分配1个字节,为每个整型(int)数据分配4个字节,为每个指针分配4个字节,sizeof(x)用于计算为X分配的字节数。
[C代码]
#include <stdio.h>
#include <string.h>
int main()
int arr[5]=(10,20,30);
char raystr[]="JustAtest/n";
char *ptr=mystr;
printf("%d%d%d/n",sizeof(int),sizeof(unsigned int),sizeof(art));
printf("%d%d/n",sizeof(char),Sizeof(mystr));
printf("%d%d%d/n",sizeof(ptr),siZeof(*ptr),strlen(ptr));
return 0;
问答题
请写出以上C代码的运行结果。
[说明2]
const是C语言的一个关键字,可以用来定义“只读”型变量。
【正确答案】4 4 20
1 1 1
4 1 10
【答案解析】
问答题
(1)请定义一个“只读”型的整型常量size,并将其值初始化为10;
(2)请定义一个指向整型变量a的指针ptr,使得ptr的值不能修改,而ptr所指向的目标变量的值可以修改(即可以通过ptr间接修改整型变量a的值)。
注:无需给出整型变量a的定义。
【正确答案】(1)const int size=10;或int const size=10;
(2)int* const ptr=&a;
【答案解析】
问答题
某C程序文件中定义的函数f如下所示,请简要说明其中static的作用,以及形参表“const int arr[]”中const的作用。
StatiC int f(const int art[])
{
/*函数体内的语句省略*/
}
【正确答案】static的作用:说明f是内部函数(局部函数),只能在本文件中调用它。
const的作用:在函数f中不能修改数组元素的值,若修改,编译时会报错。
【答案解析】本题考查考生对C语言中常用关键字的掌握和应用情况。
第一题考查sizeof运算符,用于计算数据空间的字节数。
在第一个输出语句printf("%d%d%d/n",sizeof(int),sizeof(unsigned int),sizeof(arr))中,由于int型数据占4个字节,因此sizeof(int)和sizeof(unsigned int)的值都是4。art是整型数组,共有5个元素,因此sizeof(arr)的值为4*5=20。
在第二个输出语句printf("%d%d/n",sizeof(char),sizeof(mystr))中,由于char型数据占1个字节,因此sizeof(char)的值是1。mystr是一个字符数组,由于其包含10个字符,加上字符串结束标志,共11个字符。因此,其sizeof的操作结果为11。
在第三个输出语句printf("%d%d%d/n",sizeof(ptr),sizeof(*ptr),strlen(ptr))中,ptr为一个指针,所有指针变量的sizeof操作结果均为4,因此,sizeof(ptr)的值为4。*ptr的值为字符'J'因此sizeof(*ptr)的值为1。strlen()函数用于计算字符数组中的字符数,以'/0'作为结束判断条件,不计算'/0'。因此,strlen(ptr)的值为10。
第二题考查const的用法。
(1)const加在int x的前面,用来定义一个不可被改变的整型常量x,这个x必须在声明时赋值。因此,定义一个“只读”型的整型常量size,并将其值初始化为10,可用语句实现为:const int size=10。
(2)题目的描述用于定义const指针,即允许通过指针修改数据,但不能修改指针本身,其语法格式为:类型*const p=&x。因此,定义一个指向整型变量a的指针ptr,使得ptr的值不能修改,而ptr所指向的目标变量的值可以修改,可用语句实现为:int* const ptr=&a。
第三题在题目所给的函数f中,static关键字修饰f,说明f是一个局部函数,只能在本文件中调用它,而其他文件则无法调用。形参表中的const关键字表明在函数f中不能修改数组art元素的值,若修改,编译时会报错。