TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码
搜索到 1 篇与 的结果
2025-07-27

C++数组与指针:表面相似下的本质差异

C++数组与指针:表面相似下的本质差异
一、表象的相似性当新手第一次接触C++数组和指针时,最常产生的困惑就是:cpp int arr[5] = {1,2,3,4,5}; int* ptr = arr; // 看似可以直接赋值这里数组名arr能直接赋值给指针ptr,且二者都能用[]运算符访问元素:cpp cout << arr[2] << endl; // 输出3 cout << ptr[2] << endl; // 同样输出3这种可互换性源自数组名的"退化"(decay)特性——在大多数表达式中,数组名会自动转换为指向其首元素的指针。但这种表象相似性掩盖了深层的本质差异。二、本质差异剖析1. 类型系统的视角 数组是派生类型(derived type),其完整类型信息包含元素类型和长度 指针是基础类型,仅存储内存地址信息 通过typeid可以直观看到差异:cpp cout << typeid(arr).name() << endl; // 输出"A5_i"(5个int的数组) cout << typeid(ptr).name()...
2025年07月27日
5 阅读
0 评论