c - 输出如何作为 1 而不是 j 的地址
问题描述
为什么输出为 1 而不是 ji 的地址尝试每个字母表仍然给出 1 作为输出
这个程序怎么没有给出 j 的地址,为什么它给出 1 作为输出,我尝试将每个字母作为输入,它仍然给出 1?
#include "stdio.h"
int main()
{
char arr[100];
printf("%d", scanf("%s", arr));
/* Suppose that input value given
for above scanf is "jje" */
return 2;
}
它不应该给出第一个字母的地址,即 j
解决方案
不,您正在打印scanf
. 这不是任何地址,但是(强调我的):
成功时,该函数返回参数列表中成功填充的项目数。由于匹配失败、读取错误或到达文件结尾,此计数可以与预期的项目数匹配或更少(甚至为零)。
由于该scanf
结果成功匹配%d
,因此您得到1
.
如果你想打印那个地址,也就是 的地址arr
,你可以试试
printf("%p", arr);
推荐阅读
- python - 猴子修补具有分层继承的实例的方法
- jenkins - 是否可以触发詹金斯管道中的特定阶段?
- python - 当两个值相同时,如何将 pandas 数据框列的值与变量进行比较以获得总和?
- reactjs - React Hooks:是否有理由省略 useEffect 和 useCallback 的 create 或回调是不好的?
- python - 如何为python文件夹中新添加的文件查找时间
- rest - Http Responding 403 Forbidden just in Post Request in GET request 没问题
- python - 将 Procfile 移动到项目根目录会使 Django 应用程序崩溃
- reactjs - Material-UI Popover 打开时无法点击背景下的元素
- spring-boot - OSGi Karaf Spring Boot 2.1.4-发布错误
- linux - 如果它以超时开始,如何退出 bash 脚本?