指针的概念
使用指针的问题
声明等价
指针一定要赋初值
例如1
//char *mychar = 123;//编译失败
char *mychar = NULL;//或者char *mychar=0;编译通过
cout << mychar << endl;
即使编译通过,程序也会停止运行。(原因:指针指向了NULL,空指针)
运行通过需要指针指向某个地址
例如2:
char my='i';
char *mychar=&my;
cout<<mychar<<endl;
打印结果:
出现乱码原因:cout只接受字符串变量,而不接受对char字符变量进行处理,原因在于char类型末尾没有‘\0’字符结束,导致乱码。
验证cout只接受字符串,而不接受char字符:
//头文件要加#include<string.h>
string ss = "chen";
string *sp = &ss;
cout << sp <<endl;
打印结果是字符串的地址。(没有乱码)
输出字符的地址,出现乱码解决方法
char my='i';
char *mychar=&my;
cout<<(void *)mychar<<endl;//也可以用(int*)mychar
打印结果:
原因:cout对于char*有特殊处理,因此要输出地址的话要转换成其他类型的指针,最好用void*l来强制转换。