日常刷题 (0)

牛客刷题        

1.即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同?

答:错,指针变量的赋值只能赋予地址, 决不能赋予任何其它数据,否则将引起错误。

2.如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息。

答:对。

3.设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL。

答:错,p = NULL;和p=0;是一样的。

4.指针变量之间不能用关系运算符进行比较

答:错,指针之间的大小比较的意义,表示在内存中他们指向的位置的高低关系。解析有下。

/*************   第4题  解析  如下 ***************/

1.       指针变量中存放的是地址值,也就是一个数字地址,例如某指针变量中的值是0x2000 0000,表示表示此指针变量存放的是内存中位于0x20000000地方的内存地址。指针变量可以加减,但是只能与整型数据加减,此时加减的含义并不是其地址值进行了加减,也就是说如果指针变量p的值是0x20000000,那么p=p+2;的值并不是0x2000 0002,并不是地址值的简单相加减,那么地址值加减多少是与指针指向的数据类型相关联的:如果在64位的操作系统,p是指向整型数据的指针变量,那么p=p+2之后,p的存储的地址值变成0x2000 0016;同理,如果在32位的操作系统上,p是指向整型数据的指针变量,那么p=p+2之后,p的存储的地址值变成0x20000008也就说实际上地址值加了sizeof(int)*2这么多。说明白点,我们加减的数字是以指针指向的数据类型为量度的,p+2表示p在内存中前移两个int的距离,如果p不是int类型,而是其他类型道理也是一样。同样指针与整型数据相减也是同样的道理。

2.       指针之间可以相减,但不可以相加:两个同一类型的指针变量是可以相减的,他们的意义表示两个指针指向的内存位置之间相隔多少个元素(注意是元素,并不是字节数),例如对于int类型的指针pp1.p1-p的意义表示他们之间相隔多少个int类型的元素。同样对于其他类型的指针变量之间相减的意义也是一样。指针变量的自加和自减实际上是与整数1的加减运算。

3.        指针之间可以比较大小。但是同样也限于两个相同类型的指针变量,不同类型的指针变量之间比较大小没有任何意义。指针之间的大小比较的意义,表示在内存中他们指向的位置的高低关系。

/******************************************/

5.

#include <stdio.h>
void func( int n )
{
    static int num = 1;
    num += n;
    printf("%d",num);
}
main( )
{
    func(3);
    func(4);
    printf("\n");
}

输出结果是什么?

答: 4  8

解析:主要是静态局部变量的考察。

    静态局部变量有以下特点: 
     (1)该变量在全局数据区分配内存;
    (2)静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;
    (3)静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;

    (4)它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束;

6.C++的类和C中的struct对比的说法如下,都是对的。

在C++中,来自class的继承默认按照private继承处理,来自struct的继承默认按照public继承处理
class的成员默认是private权限,struct默认是public权限
c里面的struct只是变量的聚合体,struct不能有函数
c++的struct可有构造和析构函数

  解析如下:

     1.c++中,class和struct的区别:

        a.成员访问权限->class的成员访问权限为private,而struct的成员访问权限为public
        b.默认的继承方式->class的默认继承方式为private,而struct的默认继承方式为public

     2.struct在C和C++之间的区别
        a.c中,struct是用户自定义数据类型,而c++中,struct是抽象数据类型,支持成员定义函数;
        b.c中的struct是没有权限设置的,但是在c++中,给strcut添加了权限设置,增加了访问权限;
        c.c中的struct只是变量的聚合体,可以封装数据,但是不可以隐藏,不可以定义函数成员;但是C++中的struct可以定义函数成员

猜你喜欢

转载自blog.csdn.net/buknow/article/details/79431397
今日推荐