C++primer读忆笔记(第三章)(02)
3.3指针
int *p = 0;初始化为“没有指向任何对象”;
int *p1 =&val;初始化为val的地址;
指针不能被初始化或赋值为其他类型的值,如
int *p;
double d_val;
double *pd = & d_val;
p = pd; *p = & d_val;都是错误的。
void * q;可以持有各种类型的地址。
q = p;q = pd;都是正确的。
注意:使用指针前一定要判断指针的正确性(不为空)
3.4字符串类型
string *s1;
const char *pc = “abcdefglkhh”;
s1 = pc;//正确,可以将一个C风格的字符串赋给string对象;
char *str = s1;//编译时类型错误;
char *str = s1.c_str();//s1.c_str()指向数组第一个的指针,因为它返回了一个指向常量数组的错针,类型不对。
const char *str = s1.c_str();//终于正确了。