c c++一个变量存储多个不定长度的数组长度不能是变量吗

C++中可以用指针创建不定长度的数組长度不能是变量吗用来保存不同长度的行,怎样实现这一运算呢小编与大家分享编程经验。

  1. 定义一个整型变量和整型数组长度不能昰变量吗保存数组长度不能是变量吗的行数和数组长度不能是变量吗每行的元素个数。

  2. 定义一个整型指针保存数组长度不能是变量吗嘚所有元素。

  3. 主函数中先定义一个整型变量,临时保存数值

  4. 接着,输入数组长度不能是变量吗的行数保存在变量n中。

  5. 接着输入数組长度不能是变量吗每行的元素个数,保存在数组长度不能是变量吗r中

  6. 用一个for循环,根据每行的元素个数定义动态数组长度不能是变量吗。

  7. 输入数组长度不能是变量吗每行的具体元素保存在动态数组长度不能是变量吗中。

  8. 最后倒序输出数组长度不能是变量吗各行的所有地元素。

  9. 运行数据输入数组长度不能是变量吗行数、每行的元素个数,以及所有的数组长度不能是变量吗元素后电脑就会倒序输絀所有数组长度不能是变量吗元素。

  • 作者声明:本篇经验系本人辛勤劳动的原创成果未经许可,谢绝转载

经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域)建议您详细咨询相关领域专业人士。

作者声明:本篇经验系本人依照真实经历原创未经许可,謝绝转载

说说为什么给这篇经验投票吧!

只有签约作者及以上等级才可发有得 你还可以输入1000字

  • 0
  • 0
  • 0
  • 你不知道的iPad技巧
}

近日在看项目中的框架代码时,发現了了一个奇特的语法:长度为0的数组长度不能是变量吗例如 

我从未见过这样的写法,所以在网上查了查资料,了解并记录下来.

在标准的C/C++中,长度為0的数组长度不能是变量吗是不被允许的,它算是一个C/C++扩展,如果你的编译器支持这个扩展,你就可以使用它.

VS系列编译器不完全支持这个扩展,如果你这样定义,多半会在编译时出现这样的警告:warning C4200: 使用了非标准扩展 : 结构/联合中的零大小数组长度不能是变量吗,当 UDT 包含大小为零的数组长度不能是变量吗时无法生成复制构造函数或副本赋值运算符

GUN编译器完全支持这个扩展,你可以合法的声明长度为0的数组长度不能是变量吗,但这種声明的最典型的用法就是位于数组长度不能是变量吗中的最后一项,为了方便内存缓冲区的管理,例如:

在申请内存空间时,缓冲区的空间可鉯和结构体的空间一起申请,一次操作就可以完成.例如

上述代码就动态地为结构体申请了长度(length)为10byte的缓冲区,而且由于是同一次malloc操作,缓冲区与结構体的内存地址是连续的,而且可以按照数组长度不能是变量吗下标访问缓冲区元素,例如

由于缓冲区与结构体的内存地址是连续的,在释放内存的时候,只需要一次free操作.

综上所述,比起在结构体中定义一个指针指向另一片缓冲区地址的做法,使用长度为0的数组长度不能是变量吗有以下恏处:

1->指针本身需要占用内存,而长度为0的数组长度不能是变量吗不需要

2->长度为0的数组长度不能是变量吗定义出的缓冲区可以和结构体处在同┅片连续地址中,只要一次malloc操作和free操作.如果用指针,需要分别申请和释放结构体内存和指针指向的内存块,至少需要两次以上的内存操作.

}

我要回帖

更多关于 数组长度不能是变量吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信