2 u010150586 u010150586 于 2013.11.23 19:19 提问

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;
}

}

6个回答

u012938539
u012938539   2013.11.24 13:08

在定义变量以外地方,指针变量前加*,代表的是该指针所指向的储存单元内储存的内容,不加*,则代表该指针所指向的储存单元的编号.

u010150586
u010150586 谢谢!
4 年多之前 回复
MOMODEJIANCHI
MOMODEJIANCHI   2013.11.26 23:30

由主函数内第一行代码知cp 是指向字符串的指针,cp的值为它所指向变量的地址,一般不为零,while(cp)会导致死循环;而while (*cp)是指判断字符串是否为空和已经到达字符串末尾,*cp指字符串中某位的值~

u011687911
u011687911   2013.12.06 14:23

CP一个指针变量,里面装的是*CP对象的内存地址,怎么能作为循环判断条件

chenshunming
chenshunming   2013.11.23 22:46

while(cp)
cp的值不为0就会一直循环

while(*cp)
*cp的值为字符串末尾时为'\0',ASII码值为0,就会停止循环。

u010150586
u010150586 谢谢
4 年多之前 回复
fylsle
fylsle   2013.11.26 19:10

楼主的 cp 值肯定永远不会为 0 一直执行 ++操作,很快就会发生非法的内存操作鸟

haolong8986
haolong8986   2013.12.04 20:19

while(cp)应为while(*cp)。
另外不知道你要实现的功能是不是输出字符串的每个字符,是的话 ++cp; 应在输出后进行,即放在
cout<<(*cp)<<endl;
后面。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
致诸弟·明师益友虚心请教
诸位贤弟足下: 十月廿一,接九弟在长沙所发信,内途中日记六页,外药子一包。廿二接九月初二日家信,欣悉以慰。 自九弟出京后,余无日不忧虑,诚恐道路变故多端,难以臆揣。及读来书,果不出吾所料,千辛万苦,始得到家,幸哉幸哉!郑伴之下不足恃,余早已知之矣。郁滋堂如此之好,余实不胜感激!在长沙时,曾未道及彭山屺。何也? 四弟来信甚详,其发愤自励之志,溢于行问;然必欲找馆出外,此何意也?不过
请教别人的时候一定要虚心
请教别人的时候一定要虚心
CP、SP是什么?
SP是(Service Provider)服务提供商的缩写!SP指移动互联网服务内容应用服务的直接提供者,负责根据用户的要求开发和提供适合手机用户使用的服务。从企业业务开展的角度来看,目前 SP可以分成三大类: ★门户型 SP就是由门户网站提供的短信服务。主要有搜狐、新浪、网易、中华网、Tom等几家。其短信服务的内容主要有铃声、图片、文字传情、新闻、游戏等,这些需要不断补充素材的服务是这些门户
浅谈Linux下mv和cp命令的区别
我之前在项目中遇到一个很奇怪的问题,对于inotify监视一个文件的时候,发现有些时候inotify有些时候会 “失效”。后来我就没办法,去监视文件所在的目录。看下面的, #!/bin/bash src=/tmp/test/test.txt # directory to monitor /usr/local/bin/inotifywait -rmq -e modify $
Linux中执行cp命令复制时候出现错误及解决方法
执行cp uboot /Myfile/出现错误提示:omitting directory 'uboot'解决方法如下:cp -r uboot /Myfile/-r是递归的意思
C++Primer第五版 4.3节练习
练习 4.8:说明在逻辑与、逻辑或及相等性运算符中运算对象求值的顺序。 答:运算符优先级由高到低排列: ==,&& ,||,按照这个优先级进行值的求解。练习 4.9:解释在下面的if语句中条件部分的判断过程。 const char *cp = “Hello World”; if (cp && *cp) //if()括号里面的表达式,值非0即为真,因此,if(cp && *cp)括号里表示
Linux 常用基本命令 cp mv
这篇博客将讲解cp命令以及mv命令。     拷贝文件:cp(copy拷贝)     cp 命令的功能是将给出的文件或者目录复制到另一个文件或者目录中,相当于DOS 下的copy命令。     常用选项说明。          使用:cp b.txt zhuangge/ ,将b.txt文件复制到zhuangge文件夹下面,结果如下。          使用:cp -r boge zh
Linux cp 与 mv 命令
noarch是no architecture的缩写,说明这个包可以在各个不同的cpu上使用 包有这么几种(后缀):*.386.rpm,*.486.rpm,*.586. rpm,*.686.rpm,这是与CPU的指令集有关. cp = copy || cp -R 使用方法 cp 复制文件 cp -R 复制目录 复制文件或目录 复制目录,用法:CP {源文件} {目标目录
C语言实现Linux cp命令
1.分析所需功能 文件到文件(参数:两个文件名) 1.文件到文件的复制 2.文件到文件的硬链接(-l) 3.文件到文件的软链接(-s) 文件到目录(参数:一个文件名,一个目录名) 1.文件到目录的复制 2.新目录下建立文件硬链接(-l) 3.新目录下建立文件软链接(-s) 目录到目录 1.目录的递归复制(-r) 2. 功能函数的实现 文件到文件的复制copyF2F(char * src
linux命令中的cp和scp命令的区别
cp 是普通的文件复制scp 是通过ssh 本机和其他电脑上的复制cp a.txt b.txt 把 a.txt 复制为 b.txtscp a.txt xxx@192.168.110.110:/home/xxx把 a.txt 赋值到局域网 ip 为 192.168.110.110 的机器/home/xxx 目录