字符串指针(char*)和字符数组(char [])区别

原文:http://www.blogbus.com/kavine-logs/29243638.htmlhtml


今天在编写几个小函数的时候,半天调不通,长久不使用C++知识都快忘光了,赶忙拣些起来应付即将到来的应聘。数组

void main()
{
    char* pStr1 = "Hello!";
    char pStr2[] = "Hello!";
    change(pStr1);
    change(pStr2);
}
void change(char* pInstr)
{
    pInstr[0]='O';
}函数

两种change编译均可以经过,但发现第二个change是能够正确地修改第一个字母为'O',而第一个会操做失败致使程序死掉。spa


基础知识太差,木的办法,查了查资料,两种定义字符串的方法是有区别的。指针


字符串指针变量自己是一个变量,用于存放字符串的首地址。而字符串自己是存放在以该首地址为首的一块连续的内存空间中并以‘\0’做为串的结束。字符数组是因为若干个数组元素组成的,它可用来存放整个字符串。htm


第一种方法定义的字符串中的单个字符只能读,不能修改,如cout<<pStr1[0]<<endl; 但不能作pStr1[0]='O';的操做。由于它被认为是字符串常量,常量是没法修改的。
而第二种方面定义的字符串是没有这个限制的。blog

相关文章
相关标签/搜索