const相关的一道面试题
来源:互联网 发布:0verture for mac 编辑:程序博客网 时间:2024/05/17 06:22
以下3个有什么区别
char * const p;
char const * p;
这样的普通数据类型,直接是只读常量,不可改;
2.
如果是指针
2.1
const char *p(等同于 char const *p):
*p不可以改,但是可以改变指向的数据来间接的改变*p
例如 const char *p=&c;
c='C';
这时*p数据改变了,p地址也改变了
简单说就是,*p只读,p可读写
2.2
char * const p:
地址不可改变,但是可以改变*p的值,这样也可以改变指向的变量的值
p只读,*p可读写
char * const p;
char const * p;
const char *p;
#include<stdio.h>void test(){ /* *主要测试const的是 *地址还是地址里的数据 */char x='A';char * const p=&x; //p=0x00050000;//errror,ro,不能改地址char c='c';//p=&c;//read-only variableprintf("first %p\n",p);*p='b';//可以改变地址里的数据,const的是地址里的数据printf("second %p %c %c\n",p,*p,x);printf("=================\n\n");char const *p2=&x; printf("third const *p2=%c p2=%p\n",*p2,p2);//数据也改变了p2=&c;c='C';printf("fourth const *p2=%c p2=%p\n",*p2,p2);//地址改变了/*const在这里的作用是什么呢?*///*p2='D';//read-only 在这里不可以用 直接操作 //相当于一个常量指针,*p2不可以再变,但可以改变指向的数据从而改变该常量指针}int main(int argc,char**argv){test();return 0;}1.如果 const int a=10;
这样的普通数据类型,直接是只读常量,不可改;
2.
如果是指针
2.1
const char *p(等同于 char const *p):
*p不可以改,但是可以改变指向的数据来间接的改变*p
例如 const char *p=&c;
c='C';
这时*p数据改变了,p地址也改变了
简单说就是,*p只读,p可读写
2.2
char * const p:
地址不可改变,但是可以改变*p的值,这样也可以改变指向的变量的值
p只读,*p可读写
0 0
- const相关的一道面试题
- 给一道关于const的面试题
- 一道网络相关面试题
- C++ const面试题和相关的解释
- C++ const面试题和相关的解释
- 中兴的一道面试题
- 一道面试题的思考
- 微软的一道面试题
- 一道NEC的面试题
- 一道面试题的分析
- 一道数字的面试题
- 一道错误的面试题
- 一道公司的面试题
- google的一道面试题
- google的一道面试题
- 一道有趣的面试题
- 外企的一道面试题
- 一道C的面试题
- oracle 注入整理
- Java面向对象——黑马训练营
- 如何在操作系统命令行上执行sql
- 安装CDH时hmaster不能启动问题
- APPCAN远程URL页面打开本地资源
- const相关的一道面试题
- 改变多行文本字符串的缩进
- Trident State 详解
- 安装Cloudera manager的时候页面卡住
- 我的感想十五
- spring配置文件
- GlobalFreePtr()/GlobalAllocPtr()
- android知乎小圆圈刷新效果
- IntelliJ IDEA 添加对 Extjs6 支持