#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstring>
/*
指针和字符串
1) 有些编译器将字符串字面值视为只读常量,如果试图修改它,将导致运行错误。在c++中字符串字面值将被视为常量
2)有些编译器只使用字符串字面值的一个副本来表示程序中的所有的该字面值
*/
int main()
{
using namespace std;
char animal[20] = "bear";
const char *bird = "wren";
char *ps;
cout << animal << "and" << bird << endl;
cout << "enter a kind of animal";
cin >> animal;
//注意:将animal赋值给ps不会复制字符串,而只是复制地址
ps = animal;
cout << "before using strcpy" << endl;
cout << animal << " at " << (int *)animal << endl;
cout << ps << " at "<<(int *)ps<<endl;
ps = new char[strlen(animal) + 1];
//应该使用strcpy()和strncpy() 而不是赋值运算符来将字符串赋给数组
strcpy(ps, animal);
cout << animal << " at " << (int *)animal << endl;
cout << ps << " at " << (int *)ps << endl;
delete[]ps;
system("pause");
return 0;
}