C++面试题(一)(均是去年刷的题)

(一)
1,谈谈你对const的理解(主要C语言范围内)
2,下面的声明都是什么意思?
1
const int a;
2
int const a;
3
4
const int *a;
5
int *const a;
6
int const*const a;

考点分析:
(1)C语言基础知识,数据类型,关键词的理解。
(2)是否深究技术细节。
解题思路:
const关键词用来做什么?const是一个C中类型修饰符。常见的数据类型修饰符有哪些?
short long unsigned signed static auto extern register
定义一个变量
 
        
1
const int a;
2
int const a;

const的整形变量完全一样。

(3)
1
const int *a;
2
int *const a;
3
int const*const a;

对指针变量类型的理解。
(a)[]()*在数据定义时与表达式中优先级一样的理解。
         int *a[10] ; //因为[]的优先级高于*,因此是一个数组,每个成员类型为指针,指向int。
         int(*a)[10]; //因为()优先级高于[],因此,先看里面,是一个指针,指向类型是一个数组。
 (b)指针的判断从左向右
const int *a; //a是一个变量名,*表示它是一个指针(类型已经确定),余下的是指向                      类型,因此,a是一个指向const int 的指针,及指向的数据不可修改。
int *const a; //*cons起来修饰a,即a只读,*表示a是一个指针,因此,这是一个只读 //                       的指针,指向的类型为int型的变量。
int const *const a; //*表示指针不可修改,int const是指针指向的类型,仍然是const。

(4)
typedef void *VP;
(c) const void *ptr;
(d) const VP ptr;
首先要理解typedef是定义一种数据类型。一定与define区分开。
typedef void VP; //VP是类型名字,余下的是这个类型的真实类型。

const VP ptr;
是不是替换为const void *ptr; // 不是,void* 是一个整体
const int i; = int const i;

作用:
(1)向程序猿传递一个信息,这个不要修改。
(2)有可能让编译器产生更精简紧凑代码,减少bug。
(3)合理保护我们只读的数据,避免不必要的错误。

使用位置:
(1)定义常量。防止被修改。
(2)函数的参数中,如果不希望子函数去修改被调用函数的某个数据。可以加以限制。例如:
char *strcpy(char *dest, const char *src);
char *strncpy(char *dest, const char *src, size_t  n);
(3)在C++中,类的成员函数的使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值