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

咨询C语言编译警告‘makes integer from pointer without a cast’的含义

编译警告解析

问题中的编译警告信息

assignment to 'char' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
   31 |         array[kategori] = "Best Pick";
      |                         ^
t02.c:36:25: warning: assignment to 'char' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
   36 |         array[kategori] = "Must Read";
      |                         ^
t02.c:40:25: warning: assignment to 'char' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
   40 |         array[kategori] = "Recommended";
      |                         ^
t02.c:44:25: warning: assignment to 'char' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
   44 |         array[kategori] = "Average";
      |                         ^
t02.c:47:25: warning: assignment to 'char' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
   47 |         array[kategori] = "Low";

对makes integer from pointer without a cast的解释

这个警告的核心是类型不匹配引发的隐式转换风险,具体拆解:

  • 类型本质差异:代码里的array[kategori]是单个char类型(属于整数类型),而右侧的"Best Pick"这类字符串字面量,本质是char*指针——它指向字符串在内存中首字符的存储地址。
  • 隐式转换行为:C语言会自动尝试把char*指针(内存地址本身是整数类数值)转换成char类型的整数,但这种转换没有显式强制类型转换语句,编译器无法判断你是故意这么做还是代码逻辑写错,因此抛出警告。
  • 背后的逻辑错误:你显然想把完整字符串存入数组元素,但如果array是char类型数组,单个元素只能存储一个字符,根本容纳不了字符串。正确的做法应该是将array定义为char*类型数组(用来存储字符串指针),或者用strcpy这类函数把字符串复制到足够长度的char数组元素中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:55:20