上次说了一些有意思的面试题, 今天我们结着看看一些关于指针和sizeof的面试题:
下面是我看到的一些面试题
1、简述
char * const p;
char const *p;
const char *p;
之间的区别。
首先讨论:
char * const p; 这里可以知道const修饰是指针变量p; 因此指针p的指向不能改变,这样的变量定义必须首先初始化,否则将不能编译通过。但是p指向的变量的存储内容可以改变。
如果你对编程感兴趣或者想往编程方向发展,可以关注微信公众号【筑梦编程】,大家一起交流讨论!小编也会每天定时更新既有趣又有用的编程知识!
Exp:
char chTest1;
char chTest2;
char * const p=&chTest1;
// p=&chTest2; 这个地方是错误的,不能这样赋值
*p=‘c’;
chTest1=‘b’;
接下来讨论:
char const *p; 这里可以知道const修饰的是*p; 因此可以知道不能通过*p指向来改变变量的值; 但是指针p的指向可以改变,而且可以通过原变量进行改变值。
Exp:
char chTest1;
char chTest2;
char const *p=&chTest1;
p=&chTest2;
chTest=‘a’;
这里可以知道:
1)p的指向可以改变
2)不能通过*p= 某个值进行赋值
3)指针指向的变量的值自己可以改变。
最后讨论:
const char *p=&chTest1;
这里可以知道const修饰的是*