您的位置:首页 > 编程语言 > C语言/C++

C++中字符指针和字符串常量应该注意的地方

2013-10-19 13:17 441 查看
//字符指针和字符串的一些容易混淆的地方,在这里自己总结了一点经验,如果有什么不正确的地方希望大家可以指出来。我是个初学者,还望多多指导

#include<iostream.h>

#include<string.h>

int main()

{

     char *str = "my china"; //该语句虽然编译连接时没有错误,但是在运行的时候就会出现错误,报告内存不可写。
                                //原因就是str指针变量指向的是一个字符常量,如果str指向的内存再次被赋值就出出错。
//正确的写法应该是 const char* str = "my china";这样在编译时就会提醒错误。
strcpy(str,"no");

cout<<str<<endl;
return 0;
}

//如何输出指针变量的地址和指针变量指向的地址

#include<iostream.h>

#include<string.h>

int main()

{

char* str = new char[10];  //动态分配内存
strcpy(str,"my china");
str = "dhh";      
//此时str指针变量不在指向分配的空间,而是指向字符常量"d"的内存单元,
                       //这样就不能再改变内存的值了

cout<<str<<endl;
cout<<&str<<endl;                                          
//输出指针向量str的地址
cout<<"0X"<<hex<<(int)str<<endl;                
 //指针str指向的内存首地址,hex是以16进制输出
cout<<"0X"<<hex<<(int)&(str[1])<<endl;      
  //指针str指向的首地址下面的一个字节内存

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息