c - 无法识别的指针行为

标签 c pointers printf

#include<stdio.h>
int main() {
  char str[]={'1','2','3'},*p;
  p=str;
  printf("%c",p);
  return 0;
}

输出-@。

它不应该打印 1 还是 %c 可能是原因?

最佳答案

要打印指针处的值(即 1,如您所料),您必须取消引用该指针。在你的情况下,

printf("%c",p);

应该是

printf("%c", *p);

FWIW,printf("%c",p); 将调用未定义的行为,因为提供的参数类型将与提供的格式说明符不匹配。

关于c - 无法识别的指针行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33531262/

相关文章:

c++ - 递归查找二叉树中的最小数

c - 生产者-消费者和条件变量程序陷入无限循环

C - 与指针有关的语义

java - 我认为 printf 和字符串连接;初学者的 future 看起来很黯淡

c - MSP430 微 Controller 的 printf 支持

java - 如何在java printf中保留数字符号?

c - 没有 printf 核心,段被违反

C 结构示例,编译期间出错

c - 关于声明和初始化字符串以及字符串内存区域的查询

结构的 C 指针 - 段错误