#include
using namespace std;
void main()
{
const char *cp="hello!";
int cnt=0;
while(cp)
{
++cnt;++cp;
cout<<cnt<<endl;
cout<<*cp<<endl;
cout<<(*cp)<<endl;
}
}
while(cp)
cp的值不为0就会一直循环
while(*cp)
*cp的值为字符串末尾时为'\0',ASII码值为0,就会停止循环。
在定义变量以外地方,指针变量前加*,代表的是该指针所指向的储存单元内储存的内容,不加*,则代表该指针所指向的储存单元的编号.
楼主的 cp 值肯定永远不会为 0 一直执行 ++操作,很快就会发生非法的内存操作鸟
由主函数内第一行代码知cp 是指向字符串的指针,cp的值为它所指向变量的地址,一般不为零,while(cp)会导致死循环;而while (*cp)是指判断字符串是否为空和已经到达字符串末尾,*cp指字符串中某位的值~
while(cp)应为while(*cp)。
另外不知道你要实现的功能是不是输出字符串的每个字符,是的话 ++cp; 应在输出后进行,即放在
cout<<(*cp)<<endl;
后面。
CP一个指针变量,里面装的是*CP对象的内存地址,怎么能作为循环判断条件