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

在C语言中如何初始化指向数组的指针数组?赋值遇类型不兼容警告

指针类型不兼容警告的解决办法

你写的代码里,char (*array[10])[20] 声明的是一个包含10个元素的数组,每个元素都是指向长度为20的char数组的指针,也就是每个元素的类型是 char (*)[20]。

而string是长度为20的char数组,在赋值时会自动退化为指向数组首元素的指针,类型是char*。这俩类型完全不匹配,所以编译器报了「赋值时指针类型不兼容」的警告。

给你两种解决思路:

  • 如果你确实需要保留array的原类型(存指向固定长度char数组的指针),那赋值时要取string的地址,因为&string的类型正好是char (*)[20],和array元素类型匹配:

    char (*array[10])[20], string[20] = "AEIOU";
    array[2] = &string; // 取数组地址
    // 访问时要先解引用指针,再访问数组元素
    printf("%c", (*array[2])[0]); // 输出'A'
    
  • 如果你的实际需求只是存字符串指针(不需要严格指向固定长度数组),那直接把array声明改成字符串指针数组就行,这样类型就匹配了:

    char* array[10], string[20] = "AEIOU";
    array[2] = string; // 直接赋值,无警告
    printf("%c", array[2][0]); // 输出'A'
    

内容的提问来源于stack exchange,提问作者Luca Fiorentino Heredia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:03:15