老师参与

char * P="Hello"; 请教老师:

mooc_citroen 发表于2018年04月12日
<p>魏英老师</p><p>你好:</p><p>我有一个问题请教一下:</p><p>假定有char * P=&quot;Hello&quot;;,要输出这个字符串的地址值的正确写法是<br > A. cout&lt;&lt; *P &nbsp;&nbsp;&nbsp;&nbsp; B. cout&lt;&lt;P<br > C. cout&lt;&lt;&amp;P &nbsp;&nbsp;&nbsp;&nbsp; D. cout&lt;&lt;(void *)P</p><p>&nbsp;</p><p>給的答案是C</p><p>//但我验证的,如果字符串地址值的话: 应该是D,(但我不理解 强转(void*)P 应该怎么理解)</p><p>-----</p><p>另外请问老师:</p><p>char ch= &quot;hello&quot;;</p><p>char *p = &amp;ch;</p><p>.C&nbsp;&nbsp;&nbsp; //c语言的话编译就可以通过,</p><p>.Cpp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //c++下就提示错误 error: invalid conversion from 'const char*' to 'char' [-fpermissive]|</p><p>&nbsp;</p><p>~祖国的花朵向_教书育人的园丁致以诚挚的谢意,谢谢老师;</p><p>方便的话请老师把邮箱地址告诉我一下,我想留一个联系方式;</p><p>我的mail:&nbsp;</p><p>nippon_koji@163.com&nbsp;&nbsp;&nbsp;&nbsp;;</p><p><br ></p><p><br ></p><p>&nbsp;</p><p>&nbsp;</p><p><br ></p>
1 回复

    1楼

  • jessicanwpu 发表于2018年04月12日
    1 | 3 | 举报
    <p>第一个问题,如果要输出的是字符串的地址则应该选B,因为字符串的地址就放在P里面啊。如果要输出P的地址,则输出&amp;P。(void *)P是对指针进行类型转换,将字符型的指针转换成空指针。</p><p><br ></p><p>第二个问题,char ch= &quot;hello&quot;;这种初始化C和C++都不会允许的,因为ch是个字符变量,不可能放得下一个字符串。</p><p><br ></p><p>谢谢你关注我们的课程,有什么问题我们还是在讨论区交流吧,说不定对别的同学也有帮助。:)</p><p><br ></p>
    jessicanwpu 发表于2018年04月12日
    • mooc_citroen 2018年04月12日
      0 | 举报
      <p>//(我在手机上输入提交之后后边的内容没有显示出来)--</p><p>谢谢老师,cout&lt;&lt;P;我在程序里验证,输出的hello;</p><p>还有一点我不明白:</p><p>char ch= &quot;hello&quot;;</p><p>char *p = &amp;ch;</p><p>.C&nbsp;&nbsp;&nbsp; //c语言的话编译就可以通过,没有error, 字符串常量 可以放到 ch 字符变量里,也可以正常输出?</p><p><br ></p>
      mooc_citroen 发表于2018年04月12日
      0 | 举报
    • mooc_citroen 2018年04月12日
      0 | 举报
      <p>int main()</p><p>{</p><p>&nbsp; &nbsp; char c[] = {&quot;hello&quot;};</p><p>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// char ch= &quot;hello&quot;;</p><p>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// char *p = &amp;ch;</p><p>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//char *p = &quot;hello&quot;;</p><p>&nbsp; &nbsp; char *p = c;</p><p>&nbsp; &nbsp; printf(&quot;%p\n&quot;,p);</p><p>&nbsp; &nbsp; printf(&quot;%p\n&quot;,&amp;p);</p><p>&nbsp; &nbsp; printf(&quot;%s\n&quot;,c);</p><p>&nbsp; &nbsp; return 0;</p><p>}</p><p>输出结果:</p><p>0060FF0A</p><p>0060FF04</p><p>hello</p><p>为什么 存储字符数组的内存单元地址c和指针地址&amp;p 相隔这么近?</p>
      mooc_citroen 发表于2018年04月12日
      0 | 举报
    • jessicanwpu 2018年04月13日
      0 | 举报
      <p>不会吧,你用的什么编程工具啊。</p>
      jessicanwpu 发表于2018年04月13日
      0 | 举报
    添加评论