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;
}
#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;
}
相关文章推荐
- 用字符数组和字符串指针定义字符串常量时需要注意的一点
- [*注意指向常量的字符指针变量*]用指向常量的字符指针变量和字符数组方法把字符串a复制到字符串b中
- 【C++】字符串——字符数组和字符指针浅谈
- C++第17周项目2——用指针玩字符串(2)删除字符
- C/C++中,为什么字符串可以赋值给字符指针变量,单引号和双引号的区别
- c/c++返回值为指针、引用时注意的地方
- C、C++中字符串和字符指针之间的转换
- c/c++指针精讲和需要注意的地方
- 《林锐:高质量C/C++编程指南》指针注意的地方
- C/C++(字符串处理)字符指针、字符数组用法大总结
- C/C++(字符串处理)字符指针、字符数组用法大总结
- 关注C++细节——字面值初始化字符数组及字符串拷贝注意
- C++ 字符数组和字符指针和字符串
- 字符数组 字符指针 字符串常量
- 函数里定义的字符串常量与字符指针
- C与C++中字符指针处理字符串
- c++字符指针与字符串的问题
- C++字符串两个需注意的地方
- C++个人编程标准(字符、指针、字符串)
- (c++指针)自己以后要注意的地方