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

请帮忙解决C语言错误:‘initialization of ‘char’ from ‘char *’ makes integer from pointer without a cast’

C语言错误排查:initialization of ‘char’ from ‘char *’ makes integer from pointer without a cast

错误原因分析

问题出在这行代码:

char star = "*";
  • "*"是字符串字面量,C语言中它的类型是char*(指向字符数组首地址的指针),本质是一个以\0结尾的字符数组。
  • 变量star被声明为char类型,仅能存储单个字符的ASCII值。将指针类型赋值给字符类型时,编译器会尝试把指针的地址值(整数)转换为字符,这就触发了错误提示里的类型不匹配警告。

解决方案

根据你的需求(输出单个*),有两种可行方案:

方案一:使用单个字符字面量(推荐)

将字符串字面量的双引号改为单引号,这样'*'是单个字符类型,与char变量匹配:

char star = '*';

修改后的完整代码:

#include <stdio.h>

int main() {  
    char star = '*';
      
    printf("This is %c", star);
      
    return 0 ;
}

运行后会正常输出:This is *

方案二:改用字符串指针(适用于多字符场景)

如果需要处理字符串而非单个字符,可以将变量类型改为char*,同时把printf的格式符从%c(单个字符)改为%s(字符串):

char *star = "*";
printf("This is %s", star);

此方案适合多字符字符串的场景,对于单个字符而言方案一更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:45:51