c - scanf 和 p 转换说明符

标签 c c11 format-specifiers

在 C11 规范中说 %p 的参数类型在 scanf() 函数的情况下必须是 void ** 但我不知道如何输入地址并将其存储到 void ** 中。 事实上,如果我尝试制作:

void **p;
scanf("%p", p);

我遇到了段错误。

附言 C11规范:

The corresponding argument shall be a pointer to a pointer to void

最佳答案

void **p;
scanf("%p", p);

因为同样的原因不起作用

int *i;
scanf("%i", i);

不起作用 - 您正在写入一个未初始化的指针(或至少告诉 scanf 写入一个指针)。

这个有效:

int i;
scanf("%i", &i);

还有这个:

void *p;
scanf("%p", &p);

关于c - scanf 和 p 转换说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27686682/

相关文章:

c - 函数指针 "assignment from incompatible pointer type"仅当使用可变参数省略号时

c - 在指针赋值中使用指向内容

c - 如何控制 double 变量小数点字符后出现的位数?

c - 噪音消除设置 - 智能地组合麦克风的信号

无法获得 scanf_s 或切换工作

CAN总线过滤器和屏蔽逻辑

string - $d 在 printf 中做什么?

c - 程序没有打印我的 long long 变量

c - 试图理解 C 中的 extern

c - 为什么我在使用 GCC 编译时不必包含我的头文件?