同步阅读进度,多语言翻译,过滤屏幕蓝光,评论分享,更多完整功能,更好读书体验,试试 阅读 ‧ 电子书库
说 明如果您的编译器不支持%p,可以使用%u或%lu作为替代。
看一下这个程序,您会以为它复制了字符串“Don't be a fool! ”,而且乍一看结果似乎也验证了您的猜测。
但是再仔细研究一下函数printf()的输出。首先,mesg和copy以字符串形式(%s)输出。这里并没有奇怪的事情发生,两个字符串都是“Don't be a fool! ”。
每一行的下一项是指定指针的地址。mesg和copy这两个指针分别存放在位置0x0064fd58和0x00064fd5c。
现在注意一下最后一项,即value。它是指定指针的值。指针的值是该指针中存放的地址,可以看到mesg指向位置0x0040c000, copy也是如此。因此,字符串本身没有被复制。语句copy=mesg;所做的事情就是产生指向同一个字符串的第二个指针。
为什么如此谨慎行事?为什么不干脆复制整个字符串?好了,问一下自己哪一种方法更有效率?复制一个地址还是复制50个单个的元素?通常,只有地址才是程序执行所需要的。如果确实需要复制字符串,可以使用函数strcpy()或strncpy(),这两个函数会在本章稍后讨论。
我们已经讨论了如何在程序中定义字符串,现在来看一看如何从键盘输入字符串。
请支持我们,让我们可以支付服务器费用。
使用微信支付打赏
