c - 为什么字符串不返回其内存位置?
问题描述
他们说字符串自然是一个字符数组,表示其第一个字符的内存位置:string == &string[0]。这就是为什么当用户希望程序将数据读入该变量时,他不必在字符串变量之前指定 & 符号:
scanf("%s", string);
但是有一个合理的问题:为什么我们在打印字符串时看不到字符串的内存位置?
printf("%s", string);
解决方案
但是有一个合理的问题:为什么我们在打印字符串时看不到 &string[0] ?
printf("%s", string);
我假设您的意思是您希望看到打印的地址而不是内容。
这就是格式说明符的用途。您将第一个字符的地址传递给printf
并且因为该参数有一个%s
格式说明符,所以该函数知道它必须获取地址,取消引用它并打印任何字符,直到0
在内存中找到 a 。
如果您提供了%p
格式说明符,您将看到打印的地址。在这种情况下,您需要将地址转换void*
为完全符合标准。
推荐阅读
- jenkins - 传递自己的 Jenkins 内部版本号格式
- oracle - Invoker 的 Right 函数结果缓存
- c++ - c++ 负数比较
- react-native - 调用 onsend 时不会触发 WebSocket onmessage
- javascript - 谁能解释一下 Vue/Javascript 中的“代理”或“代理”是什么意思?
- node.js - mongoDB有没有办法在特定时间后自己创建一个文档,比如一天?
- php - 使用文件夹名称保存到数据库的干预图像上传
- python - 在 Python 中使用变量更新 Kivy 标签
- angular - 在路由中传递对象作为参数返回 [Object object]
- c++ - 如何从给定的一组点计算同心多边形的最大数量?