牛客 题库

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.有以下程序,程序运行后的输出结果是(  )。
int main()
{
	int a = 3, b = 4, c = 5, d = 2;

	if (a>b)

		if (b>c)

			printf("%d", d++ + 1);

		else

			printf("%d", ++d + 1);

	printf("%d\n", d);
}

解答: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.有函数定义:

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

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


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

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


    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值