📄 subject_64984.htm
字号:
<p>
序号:64984 发表者:蓝白725 发表日期:2003-12-14 22:54:26
<br>主题:问一个比较弱的问题!
<br>内容:char *p = 'a';<BR>char *p = "a";<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=&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>内容:<BLOCKQUOTE>引用“第1楼”所言<BR><Q>char *代表字符串 “a”是字符串 ‘a’是字符</Q></BLOCKQUOTE><BR><BR><BR>char* p=&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 = "a";中的"a"就不被认为是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="abc"; 我记得当初这种用法的出现就是为了简化初始化数组。象最上面的赋值多麻烦! 你就当作字符数组,只不过,编译器在自动分配内存空间的同时,会加上个 '\0' 这种用法不太正常,记住就行了!<BR><BR> 而char * p=&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-15 15:28:18
<br>内容:谢谢楼上的各位!<BR>可你们好像没有正面回答我的问题啊:(<BR><BR>我是想问char *p = 'a';为什么会出错,而char *p = "a";就没错<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; // p = new int; *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>还想请教:那"a"和'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>
<font color=red>答案被接受</font><br>回复者:sunice 回复日期:2003-12-16 15:32:35
<br>内容:当然,"a"是一个常量字符串,与"adc hij"一样,被预先分配了个地址。双引号中的内容是字符串! 就像我跟你说的,它与<BR>int *p;<BR>int c[10];<BR>p = c;<BR>是一回事:p被赋值,指向一块地址。<BR><BR>p = "a"与以下语句等价: // "a"末尾有字符串结束标志'\0'<BR>p = new char[2];<BR>*p = 'a';<BR>*(p+1) = '\0'; // 字符串结束标志,由我们自己添加<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>"a"这个字符串本身就具有一个地址值,所以可以用来初始化字符指针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 + -