#include <iostream>
using namespace std;
class Employee {
private:
const char *name;//name;address;city;code;就是字符串首字符的地址
const char* address;
const char *city;
const char *code;
public:
Employee(const char *n=" ", const char *add = " ", const char *ct = " ", const char *cd = " "): name(n),address(add),city(ct),code(cd){}
void display()
{
cout << "name:" << name << endl;//用cout可以输出整个字符串
cout << "address:" << address << endl;
cout << "city:" << city << endl;
cout << "code:" << code << endl;
}
void change_name(const char *n)
{
cout << n << endl;
name = n;
}
};
int main()
{
Employee e("wangbang", "laobeian", "yichun", "362202");
e.display();
e.change_name("bangbang");
e.display();
Employee e1;//调用各形参都有默认值的默认构造函数
e1.display();
e1.change_name("bangbang");
e1.display();
int a = 5,b=8,c=100;
//通过指针访问变量
int *p1 = &a;
cout << *p1 << endl;//5
//改变指针指向
p1 = &b;
cout << *p1<< endl;///8
//通过指针改变其所指变量的值
*p1 = 10;
cout << *p1<< endl;//10
//通过指针赋值,改变指针指向
int *p2 = &a;
p1 = p2;
cout << *p2 << endl;//5
cout << *p1<< endl;//5
const int *p = &c;
//通过指针访问变量
cout << *p << endl;//100
//改变指针指向
p = &b;
cout << *p << endl;//b已经变为10
通过指针改变其所指变量的值
//*p = 10;//“p”: 不能给常量赋值
//cout << *p << endl;//10
//通过指针赋值,改变指针指向
int *p3= &a;
p = p3;//5,可以将普通指针改变常指针指向
cout << *p3 << endl;//5
cout << *p << endl;//5
const char *pc = "wangbang";//不能char *pc = "wangbang",会报错!
cout << *pc << endl;//输出字符串首个字符,说明指针得到的是字符串首个字符的地址
cout << pc << endl;//为什么这样,输出的是整个字符串?
cout << (int)pc << endl;//这样输出的才是地址
return 0;
}
结果:
name:wangbang
address:laobeian
city:yichun
code:362202
bangbang
name:bangbang
address:laobeian
city:yichun
code:362202
name:
address:
city:
code:
bangbang
name:bangbang
address:
city:
code:
5
8
10
5
5
100
10
5
5
w
wangbang
16751472
请按任意键继续. . .