关于const的一些小基础
2010-04-24 12:43
288 查看
直接上代码
const char * p
char const *p
两者是一样的,就是指向的内容是不可变的,但是指针本身的值可以改变
char * const p
跟上面相反指向的内容可以修改,指针本身不可以修改
但是现在的编译器都会把下面这段代码运行时会错误
char * const p = "abc";
p[0] = 'A';
理论上是可以修改的。编译器默认会把字符串当做const,这个是可以修改的,见http://faq.csdn.net/read/216941.html
// 字符串const.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { char *p = "1234"; char *str1 = "abcdefg"; //*str1 = 'A';//编译能过去,但是运行错误 str1 = "12345";//直接改变str1的值 cout<<"改变后的str1为: "<<str1<<endl;//输出12345 str1 = p;//修改str1指向的指针 cout<<"改变后的str1为: "<<str1<<endl;//输出1234 const char *str2 = "abcdefg"; char const *str3 = "abcdefg";//这两句的效果是一样的,str2和str3为一个指针,这个指针指向常量的字符串,也就是指向的内容不能改变,但是可以改变该指针的值 //str3[0] = 'A';//编译过不去,提示不能给常量复制 str2 = "12345"; cout<<"改变后的str2为: "<<str2<<endl; str2 = p;//可以改变指针的值 str3 = p;//可以改变指针的值 cout<<"改变后的str2为: "<<str2<<endl;//输出12345 cout<<"改变后的str3为: "<<str3<<endl;//输出12345 char* const str4 = "abcdefg";//这句话是声明一个char类型的const指针。也就是我们能改变指向的内容,但是指针本身的值是不能改变的 //str4 = p;//这句话编译错误,因为指针str4为不可变的 //str4 = "12345";//编译过不去 //---------------------------------------------------------------------------- //下面的这段代码理论上是可以的,但是在有的编译器上编译能过运行就有错误,后来找了半天才知道原因 //可以看这篇文章http://faq.csdn.net/read/216941.html //这个是跟编译器的选项有关系 *str4 = 'A';//编译能过去,但是运行错误,但是这里理论上是可以的 cout<<"改变后的str4为: "<<str4<<endl; return 0; }
const char * p
char const *p
两者是一样的,就是指向的内容是不可变的,但是指针本身的值可以改变
char * const p
跟上面相反指向的内容可以修改,指针本身不可以修改
但是现在的编译器都会把下面这段代码运行时会错误
char * const p = "abc";
p[0] = 'A';
理论上是可以修改的。编译器默认会把字符串当做const,这个是可以修改的,见http://faq.csdn.net/read/216941.html
相关文章推荐
- 关于C的一些基础皮毛
- 关于一些基础的Java问题的解答(二)
- linux下关于进程和内存的一些基础知识
- 关于const 修饰的一些知识
- C++中关于const的一些使用惯例
- 关于GDI+的一些使用基础设置
- 关于Flash制作动画的一些基础总结
- Xman整理篇___关于Python的一些基础方法及函数
- 关于sqlite的一些基础知识
- 关于dom的一些基础知识-来自w3shool.com.cn
- 【C语言基础】关于结构体,枚举,联合,位段的一些知识
- 关于继承和覆盖(Override)的一些基础知识
- c++关于引用和const的一些问题
- c和c++关于const的一些区别
- 关于php基础类型的一些探讨
- 关于mysql的一些操作指令基础1-1
- hmtl的一些简单基础哈,关于< h1 >的。
- 关于java的一些问题,比较基础,大家可以看看咯
- 关于linux的一些基础知识
- 关于Linu型的一些基础常见操作命令(三)——文件属性操作