当前位置: 首页 > news >正文

C++的数组指针的类型

1. 错误代码

    using int_array = int[8];int_array array;int (*ptr)[8];int i = 0;for (ptr = array; ptr != array + 8; ptr++,i++){*ptr = i;}

2. 编译错误

error: cannot convert 'int_array' {aka 'int [8]'} to 'int (*)[8]' in assignment22 |     for (ptr = array; ptr != array + 8; ptr++,i++)|                ^~~~~|                ||                int_array {aka int [8]}
desk.cpp:22:27: error: comparison between distinct pointer types 'int (*)[8]' and 'int*' lacks a cast22 |     for (ptr = array; ptr != array + 8; ptr++,i++)|                       ~~~~^~~~~~~~~~~~
desk.cpp:24:14: error: incompatible types in assignment of 'int' to 'int [8]'24 |         *ptr = i;|         ~~~~~^~~

3.原因分析

指针类型不匹配
int_array 是 using int_array = int[8];,也就是“长度为 8 的 int 数组类型”。
array 的类型是 int[8],在表达式中通常会“退化”为 int(指向第一个元素的指针)。
但你声明的指针是 int (
ptr)[8],它是“指向长度为 8 的 int 数组的指针”,类型是“指向数组”的指针,不是“指向元素”的指针。
for (ptr = array; ...) 这里,相当于试图把 int[8](或退化成的 int)赋值给 int ()[8],类型不兼容,所以报:
“cannot convert 'int_array' (aka 'int [8]') to 'int ()[8]' in assignment”
“Assigning to 'int (
)[8]' from incompatible type 'int_array' (aka 'int[8]')”
指针比较类型也不匹配

ptr 是 int (*)[8]。

  • array + 8 的类型是 int*(元素指针,指向第 9 个元素的位置)。
  • ptr != array + 8 比较的是 “指向数组的指针” 和 “指向 int 的指针”,又是不同类型,所以报:
  • “Comparison of distinct pointer types ('int (*)[8]' and 'int *')”
    解引用后的类型不对,不能赋值
  • *ptr 的类型是 int[8](一个数组),不是单个 int。
  • 语句 *ptr = i; 等价于“把一个 int 赋值给一个 int[8] 数组”,数组类型在 C++ 中是不能整体赋值的,所以报:
  • “Array type 'int[8]' is not assignable”
  • “incompatible types in assignment of 'int' to 'int [8]'”

4. 修改代码如下

    using int_array = int[8];int_array array;int* ptr;int i = 0;for (ptr = array; ptr != array + 8; ptr++, i++){*ptr = i;}

另外的一种修改:

    using int_array = int[8];int_array array;int_array* ptr;int i = 0;for (ptr = &array; ptr != &array + 1; ptr++){for (auto& elm : *ptr){elm = i++;}}
http://www.jsqmd.com/news/444584/

相关文章:

  • K8s
  • 基于OFDM+QPSK调制解调的通信链路matlab性能仿真,包含同步模块,信道估计和编译码
  • 树莓派安装openclaw小龙虾
  • IEaseCore 工业通讯模块
  • 树莓派pico使用无源蜂鸣器播放小星星
  • Pandas数据处理(3): 数据分箱与行列名修改
  • Pandas数据处理(4):时间数据处理与分组聚合
  • 刚入行 3 个月,我总算搞懂了 Java 集合
  • P4588 [TJOI2018] 数学计算 题解
  • Docker使用方法及注意事项
  • 德系车底盘维修哪家专业?2026年上海浦东5大靠谱店铺推荐,省钱又省心! - 品牌企业推荐师(官方)
  • 除甲醛公司推荐:专业公司服务与技术对比分析 - 品牌企业推荐师(官方)
  • 水利工程设备采购必看!5家优质启闭机、闸门厂家推荐,选购指南一文读懂 - 品牌企业推荐师(官方)
  • 2026年福州代理记账公司哪家好?福州10家财务公司真实测评 - 品牌企业推荐师(官方)
  • 2026年GEO优化服务商排名解读:企业或商户如何选择? - 品牌企业推荐师(官方)
  • 阻燃EPS厂家2026年TOP5:5家实力厂商怎么选?工程采购避坑+价值指南 - 品牌企业推荐师(官方)
  • 张家口注册公司|张家口快速办理营业执照【张家口玉算盘财税服务】 - 品牌企业推荐师(官方)
  • 2026年张家口公司注册、张家口代理记账【张家口玉算盘会计服务有限公司】 - 品牌企业推荐师(官方)
  • 广州地区金蝶云星空最好的服务商有哪家? - 品牌企业推荐师(官方)
  • 明星代言联系哪家好 - 品牌企业推荐师(官方)
  • 2026步入式试验箱优选榜单| 步入式十大精选厂家 - 品牌企业推荐师(官方)
  • 福州睿象科技对接步骤:找对联系方式精准对接,高效启航 - 品牌企业推荐师(官方)
  • 格宾网在高标准农田建设中的技术落地全攻略:高频疑问解答,助力工程高效实施 - 品牌企业推荐师(官方)
  • 张家口注册营业执照首选【玉算盘财税服务】 - 品牌企业推荐师(官方)
  • 2026年性价比高的定制酒生产厂家哪家强? - 品牌企业推荐师(官方)
  • 订婚结婚选哪款钻戒更值?——基于4C标准的五大国产品牌理性解析 - 品牌企业推荐师(官方)
  • 数据解码2026:婚戒定制品牌全景测评,揭秘培育钻石赛道的“价值新标杆” - 品牌企业推荐师(官方)
  • 力扣Hot100---1.两数之和
  • ABC 445 E(利用线性预处理最小质因子快速得到每个数的质因子分布 trick)
  • Git Pre-commit 钩子