⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_64984.htm

📁 vc
💻 HTM
字号:
<p>
序号:64984 发表者:蓝白725 发表日期:2003-12-14 22:54:26
<br>主题:问一个比较弱的问题!
<br>内容:char *p = 'a';<BR>char *p = &#34;a&#34;;<BR><BR>为什么第一行代码会出错,而第二行代码没问题?<BR>谢谢!!!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:donly 回复日期:2003-12-14 23:10:15
<br>内容:char *代表字符串<BR>“a”是字符串<BR>‘a’是字符<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:蓝白725 回复日期:2003-12-14 23:19:12
<br>内容:char *只代表字符串吗?<BR><BR>char p0='a';<BR>char* p=&amp;p0;<BR>此时的 *p就代表一个字符吧?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:kobo 回复日期:2003-12-15 01:23:01
<br>内容:&lt;BLOCKQUOTE&gt;引用“第1楼”所言<BR>&lt;Q&gt;char *代表字符串&nbsp;&nbsp;“a”是字符串&nbsp;&nbsp;‘a’是字符&lt;/Q&gt;&lt;/BLOCKQUOTE&gt;<BR><BR><BR>char* p=&amp;p0:是将字符变量存放的地址赋给字符指针p;<BR><BR>此时*p应该说是取字符变量p0的值(是一个字符)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:蓝白725 回复日期:2003-12-15 10:02:06
<br>内容:“此时*p应该说是取字符变量p0的值(是一个字符)”?<BR>kobo,你的意思和我的有冲突吗?<BR>我的意思不也就是说*p代表一个字符吗?<BR><BR>在编译char *p = 'a';时报的错误是:无法把const char转化为char<BR>那为什么char *p = &#34;a&#34;;中的&#34;a&#34;就不被认为是const char型的呢?<BR>谢谢!<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:badboy 回复日期:2003-12-15 11:33:03
<br>内容:char p[]={'a','b','d'};<BR>char *p=&#34;abc&#34;;&nbsp;&nbsp; 我记得当初这种用法的出现就是为了简化初始化数组。象最上面的赋值多麻烦! 你就当作字符数组,只不过,编译器在自动分配内存空间的同时,会加上个 '\0'&nbsp;&nbsp;这种用法不太正常,记住就行了!<BR><BR> 而char * p=&amp;a&nbsp;&nbsp;这是个彻底的指针赋值。符合一般规律!<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:蓝白725 回复日期:2003-12-15 15:28:18
<br>内容:谢谢楼上的各位!<BR>可你们好像没有正面回答我的问题啊:(<BR><BR>我是想问char *p = 'a';为什么会出错,而char *p = &#34;a&#34;;就没错<BR>这好像是和const有关的问题<BR>谢谢!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:sunice 回复日期:2003-12-16 12:00:19
<br>内容:假如我有下面的语句:<BR>int *p;<BR>p = 5;&nbsp;&nbsp;// p = new int;&nbsp;&nbsp;*p = 5;<BR>你认为对吗?<BR><BR>而如果有:<BR>int *p;<BR>int c[10];<BR>p = c;<BR>这样呢?显然这次是对的。<BR>你的'a'就相当于这里的数字 5。<BR>a'和5并没有被分配一个地址。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:蓝白725 回复日期:2003-12-16 12:38:17
<br>内容:谢谢楼上的!<BR>可是我觉得p = 5之所以不对,是因为5是const int型的,和p(int*)类型不匹配<BR>还想请教:那&#34;a&#34;和'a'有什么不同吗?<BR>&#34;a&#34;是不是分配地址了?<BR>谢谢!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:sunice 回复日期:2003-12-16 15:32:35
<br>内容:当然,&#34;a&#34;是一个常量字符串,与&#34;adc hij&#34;一样,被预先分配了个地址。双引号中的内容是字符串! 就像我跟你说的,它与<BR>int *p;<BR>int c[10];<BR>p = c;<BR>是一回事:p被赋值,指向一块地址。<BR><BR>p = &#34;a&#34;与以下语句等价:&nbsp;&nbsp;// &#34;a&#34;末尾有字符串结束标志'\0'<BR>p = new char[2];<BR>*p = 'a';<BR>*(p+1) = '\0';&nbsp;&nbsp; //&nbsp;&nbsp;字符串结束标志,由我们自己添加<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:蓝白725 回复日期:2003-12-16 21:37:27
<br>内容:谢谢sunice!<BR>是不是可以这样理解:<BR>&#34;a&#34;这个字符串本身就具有一个地址值,所以可以用来初始化字符指针p。<BR>而'a'只是一个单纯的字符,不具备地址,所以在用它初始化p的时候,会导致类型不匹配的错误。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:sunice 回复日期:2003-12-16 22:28:01
<br>内容:对,'a'不具有地址,而指针p也没有用new分配一块地址,这样赋值导致指针没有初始化。不只是类型不配的问题。没有初始化的指针怎么能赋值呢?<BR>指针可以有两种初始化方法:<BR>第一种,用new分配一块地址(c语言里面用malloc函数),然后给里面填数据;<BR>第二种,指向一块已经分配好的地址,比如另一个确定的指针*q, 或者一个数组地址。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:蓝白725 回复日期:2003-12-16 22:36:59
<br>内容:明白了!谢谢sunice: )
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -