You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

打印s[3]的地址时为何出现编译错误?

printf格式符与参数类型不匹配导致编译错误

你的代码编译报错的核心原因是printf格式符和传入参数的类型不兼容:

  • %c格式符用于打印单个字符,要求传入的参数是char类型的数值(即字符本身);
  • 但你传入的&s[3]是s[3]的内存地址,属于char*指针类型,和%c期望的类型完全不匹配,因此编译器会抛出类型错误。

修正方案

要正确打印s[3]的字符,有两种可行写法:

  1. 直接传入字符本身(最常用):
printf("s[3]==>%c\n", s[3]);
  1. 通过解引用指针获取字符值(如果非要用地址的话):
printf("s[3]==>%c\n", *(&s[3]));

另外提一句:你代码里的注释p=s[0];是错误的,p是指针类型,s[0]是char类型,正确赋值就是p = s;——数组名s会隐式转换为指向数组首元素的指针,和p的类型匹配。

内容的提问来源于stack exchange,提问作者leejoonhoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:19:49