问题描述
- C++指针(为什么while条件中*cp正确,cp就出错,二者的区别!虚心请教!谢谢!)
- #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;}
}
解决方案
在定义变量以外地方,指针变量前加*,代表的是该指针所指向的储存单元内储存的内容,不加*,则代表该指针所指向的储存单元的编号.
解决方案二:
由主函数内第一行代码知cp 是指向字符串的指针,cp的值为它所指向变量的地址,一般不为零,while(cp)会导致死循环;而while (*cp)是指判断字符串是否为空和已经到达字符串末尾,*cp指字符串中某位的值~
解决方案三:
CP一个指针变量,里面装的是*CP对象的内存地址,怎么能作为循环判断条件
解决方案四:
while(cp)
cp的值不为0就会一直循环
while(*cp)
*cp的值为字符串末尾时为''ASII码值为0,就会停止循环。
解决方案五:
楼主的 cp 值肯定永远不会为 0 一直执行 ++操作,很快就会发生非法的内存操作鸟
解决方案六:
while(cp)应为while(*cp)。
另外不知道你要实现的功能是不是输出字符串的每个字符,是的话 ++cp; 应在输出后进行,即放在
cout<<(*cp)<<endl;
后面。
时间: 2024-11-08 19:00:31