阅读以下说明、C程序代码和问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 设在某C系统中为每个字符型数据分配1个字节,为每个整型(int)数据分配4个字节,为每个指针分配4个字节,sizeof{(x)用于计算为x分配的字节数。

admin2013-07-03  24

问题 阅读以下说明、C程序代码和问题1至问题3,将解答写在答题纸的对应栏内。
    【说明】
    设在某C系统中为每个字符型数据分配1个字节,为每个整型(int)数据分配4个字节,为每个指针分配4个字节,sizeof{(x)用于计算为x分配的字节数。
    【C代码】
    #include
    #include
    int main()
    {
        int arr[5]={10,20,30};
        char mystr[]=”JustAtest\n”;
        char * ptr= mystr;
            printf(”%d%d%d\n”,sizeof(int),sizeof(unsigned int),sizeof(arr));
        printf(”%d%d\n”,sizeof(char),sizeof(mystr));
        printf(”%d%d%d\n”,sizeof(ptr),sizeof(*ptr),strlen(ptr));
        return 0:
    }
    【问题1】
请写出以上C代码的运行结果。
    【说明】
const是C语言的一个关键字,可以用来定义“只读”型变量。
    【问题2】
    (1)请定义一个“只读”型的整型常量size,并将其值初始化为10;
    (2)请定义一个指向整型变量a的指针ptr,使得ptr的值不能修改,而ptr所指向的目标变量的值可以修改(即可以通过ptr间接修改整型变量a的值)。
    注:无须给出整型变量a的定义。
    【问题3】
    某c程序文件中定义的函数f如下所示,请简要说明其中static的作用,以及形参表“const int arr[]”中const的作用。
    static int f(const int arr[])
    {
        /*函数体内的语句省略*/
    }

选项

答案【问题1】 4 4 20 1 11 4 1 10 【问题2】(1)const int size=10;或int const size=10; (2)int*const ptr=&.a; 【问题3】static的作用:说明f是内部函数(局部函数),只能在本文件中调用它。 const的作用:在函数f中不能修改数组元素的值,若修改,编译时会报错。

解析 本题考查考生对C语言中常用关键字的掌握和应用情况。
    【问题1】本问题考查sizeof运算符,用于计算数据空间的字节数。
    在第一个输出语句printf(”%d%d%d\n”,sizeof(int),sizeof(umsigned int),sizeof(arr))中,由于int型数据占4个字节,因此 sizeof(int)和sizeof(unsigned int)的值都是4。arr是整型数组,共有5个元素,因此sizeof(arr)的值为4×5=20。
    在第二个输出语句printf(”%d%d\n”,sizeof(char),si-zeof(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。
    【问题2】本问题考查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。
    【问题3】在题目所给的函数f中,static关键字修饰f,说明f是一个局部函数,只能在本文件中调用它,而其他文件则无法调用。形参表中的const关键字表明在函数f中不能修改数组arr元素的值,若修改,编译时会报错。
转载请注明原文地址:https://kaotiyun.com/show/wnjZ777K
0

最新回复(0)