当前位置:   article > 正文

牛客 题库_int * const p,以下说法正确的是

int * const p,以下说法正确的是

1.定义:int *const ptr;下面哪种说法是正确的()

  • ptr不可修改,*ptr可修改
  • ptr不可修改,*ptr不可修改
  • ptr可修改,*ptr不可修改
  • ptr可修改,*ptr可修改
解答:A


const 的作用就是封锁它后面的东西,即后面的不可改变。
对于   int *const ptr;  没有const关键字时,为int* ptr 此时ptr是指向int的指针。加上const后,const修饰并封锁ptr。即ptr的指向不可改变。

同理 int const* ptr(等同 const int *ptr)  。const修饰 *  解引用,即 指针指向的内容不可改变。

另外,有一个口诀:
* (指针)和 const(常量) 谁在前先读谁:*象征着地址,const象征着内容;谁在前面谁就不允许改变。
常量指针:指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换。
指针常量:指向的地址不可以重新赋值,但内容可以改变,必须初始化,地址跟随一生。

2.有以下程序,程序运行后的输出结果是(  )。
  1. int main()
  2. {
  3. int a = 3, b = 4, c = 5, d = 2;
  4. if (a>b)
  5. if (b>c)
  6. printf("%d", d++ + 1);
  7. else
  8. printf("%d", ++d + 1);
  9. printf("%d\n", d);
  10. }

解答:2
第二个if和else组成了第一个if的执行语句,及等价于
if(a>b)
{
if(b>c) printf("%d",d++ +1);
else  printf("%d",++d +1);
}
printf("%d\n",d);

3.print()函数是一个类的常成员函数,它无返回值,下列表示中正确的是()
  • const void print();
  • void const print();
  • void print() const;
  • void print(const);
解答:C

const修饰类的成员函数,一般放在函数体后,如 void fun() const; 

常成员函数格式:
类型说明符 函数名(参数表)const;
int GetX() const; //声明常成员函数
const void print(const int num)const 第一个const修饰返回类型 第二个const修饰参数 第三个const修饰调用对象

4.有函数定义:

  1. void test(int a){}
  2. void test(float a){}
则以下调用错误的是:

  • test(1);
  • test(‘c’);
  • test(2+’d’);
  • test(0.5);
    解答:D


    编译器会提示参数不匹配,但是不匹配的原因是: 类型转换只能从下往上自动转换,而不能自动从上往下转换。

    0.5默认是double类型,既不能转换成float类型,也不能转换成int类型。故会提示参数不匹配。
    'c'是char类型,会自动转换为int,


    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/937420
    推荐阅读
    相关标签
      

    闽ICP备14008679号