面试题整理

这是一篇关于C++面试题的整理,涉及到指针操作、字符串赋值、内存区域、类型安全和位运算等方面的问题。题目包括了对局部变量、全局变量、静态局部变量的理解,以及C++中可能出现的溢出情况和函数 inline 的作用。
摘要由CSDN通过智能技术生成
题1:
给出以下定义,下列哪些操作是合法的?
1
2
const char *p1 = “hello”;
char * const p2 = “world”;
  • p1++;
  • p1[2] = ‘w’;
  • p2[2] = ‘l’;
  • p2++;
答案: A
p1是指向字符常量的指针,p1本身不是常量,所以p1++合法,A正确。
p2本身是指针常量,可以指向非常量的字符。但是"hello"这样声明的字符串是存储在只读存储区的,不可修改,所以B,C,D都错误。


题2:
不能把字符串"HELLO!"赋给数组b的语句是()
  • char b[10]={'H','E','L','L','O','!','\0'};
  • char b[10];b="HELLO!";
  • char b[10];strcpy(b,"HELLO!");
  • char b[10]="HELLO!";
答案: B
B 选项是错误的,连编译都不会通过,因为数组名属于常性指针,现在要改变这个常性指针的指向,这是不会编译通过的,再说B 选项的本意是将Hello 拷贝到b指向的空间中,但实际却是将b指向了在常量区的Hellow 字符串(虽然编译不会通过)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值