如何智能定义数组大小

纹枰老妖 2014-05-06 10:19:51
我想声明这样一个局部变量数组,如 int shuzu[x]:文件编译时无法确定这个x大小是多少【即我不想浪费多余的内存空间】,只有在运行时才能确定这个数组在合理情况下应该占用多少空间。请问,用什么方法比较好??
...全文
231 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2014-05-08
  • 打赏
  • 举报
回复
何必那么麻烦,C不用删除,直接复用就是了; 虽然代码不好懂,也会产生各种各样的问题; 但是也不失为一个变通的办法 CPU 只有有限的寄存器,你可以定义无数的变量, 最终不还是,用那几个寄存器,就都把他们处理了么。
纹枰老妖 2014-05-08
  • 打赏
  • 举报
回复
引用 20 楼 u012421456 的回复:
[quote=引用 13 楼 wenpinglaoyao 的回复:] [quote=引用 10 楼 u012421456 的回复:] 动态分配数组大小——http://blog.csdn.net/u012421456/article/details/23374213
谢谢您的回复,文章很精彩! 但我还有一个疑问,看下面的代码
#include "stdio.h"
char c;
...
void main()
{
  ...
}
上面的代码创建了一个全局变量c,那么在程序执行时,能不能把c给“删除”掉呢? 我的意思是,比如c所占据的内存编号为100。那么我可否在后面再创建一个int型变量b,而这个b所占用的内存是100、101、102和103呢??[/quote] 嗯,不能,——http://bbs.csdn.net/topics/100066181[/quote] 谢谢各位热心朋友的回复,可以结贴了。
lm_whales 2014-05-08
  • 打赏
  • 举报
回复
引用 17 楼 wenpinglaoyao 的回复:
上面的代码创建了一个全局变量c,那么在程序执行时,能不能把c给“删除”掉呢? 我的意思是,比如c所占据的内存编号为100。那么我可否在后面再创建一个int型变量b,而这个b所占用的内存是100、101、102和103呢??
全局变量直接定义一个数组你就可以任意使用了 int a[4096]; C++; int &b=a[1]; int &c=a[2]; 不就可以了么 至于C: *(a+1) //b a[2]; //c 这不就是那种效果了么 如果还觉得不过瘾 #define c a[2] #define b *(a+1) 至于 union 当然行了,不过楼主估计是不想这么用。 如果,还觉得不够动态,不够灵活,不够严谨 直接仿照 malloc,free 写一个,用静态数组空间分配内存的算法,就可以了。 C++可以重载 operator new(),operator delete() operator new[](),operator delete[]()
UESTC少尉 2014-05-07
  • 打赏
  • 举报
回复
new\delete或malloc\free
ForestDB 2014-05-07
  • 打赏
  • 举报
回复
动态内存管理 union { int b; char c; } a; 建议打好基础。
SmallCoder1992 2014-05-07
  • 打赏
  • 举报
回复
引用 17 楼 wenpinglaoyao 的回复:
[quote=引用 12 楼 lm_whales 的回复:]
小数据 alloca
大数据 malloc,realloc,calloc,free

看下面的代码
C/C++ code
?
1
2
3
4
5
6
7
#include "stdio.h"
char c;
...
void main()
{
...
}

上面的代码创建了一个全局变量c,那么在程序执行时,能不能把c给“删除”掉呢?
我的意思是,比如c所占据的内存编号为100。那么我可否在后面再创建一个int型变量b,而这个b所占用的内存是100、101、102和103呢??[/quote]



百曉生 2014-05-07
  • 打赏
  • 举报
回复
引用 13 楼 wenpinglaoyao 的回复:
[quote=引用 10 楼 u012421456 的回复:] 动态分配数组大小——http://blog.csdn.net/u012421456/article/details/23374213
谢谢您的回复,文章很精彩! 但我还有一个疑问,看下面的代码
#include "stdio.h"
char c;
...
void main()
{
  ...
}
上面的代码创建了一个全局变量c,那么在程序执行时,能不能把c给“删除”掉呢? 我的意思是,比如c所占据的内存编号为100。那么我可否在后面再创建一个int型变量b,而这个b所占用的内存是100、101、102和103呢??[/quote] 嗯,不能,——http://bbs.csdn.net/topics/100066181
mujiok2003 2014-05-07
  • 打赏
  • 举报
回复
引用 13 楼 wenpinglaoyao 的回复:
[quote=引用 10 楼 u012421456 的回复:] 动态分配数组大小——http://blog.csdn.net/u012421456/article/details/23374213
谢谢您的回复,文章很精彩! 但我还有一个疑问,看下面的代码
#include "stdio.h"
char c;
...
void main()
{
  ...
}
上面的代码创建了一个全局变量c,那么在程序执行时,能不能把c给“删除”掉呢? 我的意思是,比如c所占据的内存编号为100。那么我可否在后面再创建一个int型变量b,而这个b所占用的内存是100、101、102和103呢??[/quote] 不能。
洗屁屁 2014-05-07
  • 打赏
  • 举报
回复
我记得gcc 支持 这种数组的
纹枰老妖 2014-05-07
  • 打赏
  • 举报
回复
引用 12 楼 lm_whales 的回复:
小数据 alloca 大数据 malloc,realloc,calloc,free
看下面的代码 C/C++ code ? 1 2 3 4 5 6 7 #include "stdio.h" char c; ... void main() { ... } 上面的代码创建了一个全局变量c,那么在程序执行时,能不能把c给“删除”掉呢? 我的意思是,比如c所占据的内存编号为100。那么我可否在后面再创建一个int型变量b,而这个b所占用的内存是100、101、102和103呢??
赵4老师 2014-05-07
  • 打赏
  • 举报
回复
《Windows PE权威指南》 《程序员的自我修养——链接、装载与库》
mujiok2003 2014-05-07
  • 打赏
  • 举报
回复
我一般用vector

#include <vector>
std::vector<int> v(n);
赵4老师 2014-05-07
  • 打赏
  • 举报
回复
运行时变量名已经不存在了。 计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告: 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步对应汇编一行! VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
纹枰老妖 2014-05-07
  • 打赏
  • 举报
回复
引用 10 楼 u012421456 的回复:
动态分配数组大小——http://blog.csdn.net/u012421456/article/details/23374213
谢谢您的回复,文章很精彩! 但我还有一个疑问,看下面的代码
#include "stdio.h"
char c;
...
void main()
{
  ...
}
上面的代码创建了一个全局变量c,那么在程序执行时,能不能把c给“删除”掉呢? 我的意思是,比如c所占据的内存编号为100。那么我可否在后面再创建一个int型变量b,而这个b所占用的内存是100、101、102和103呢??
lm_whales 2014-05-07
  • 打赏
  • 举报
回复
小数据 alloca 大数据 malloc,realloc,calloc,free
赵4老师 2014-05-07
  • 打赏
  • 举报
回复
malloc,realloc,free
百曉生 2014-05-07
  • 打赏
  • 举报
回复
Morrisss_ 2014-05-06
  • 打赏
  • 举报
回复

int *p_arr = new int[n];     //n可以是一个int型变量
用的时候和数组一样用就是了,不过这样分配的空间要手动delete一下。

delete [] p_arr;
纹枰老妖 2014-05-06
  • 打赏
  • 举报
回复
引用 3 楼 oYinGui1 的回复:
new,malloc。
能否写一个最简单的代码示例给我看呢,朋友。
纹枰老妖 2014-05-06
  • 打赏
  • 举报
回复
引用 1 楼 Indestiny 的回复:
new或者malloc,记着用完delete或free啊
能否写一个最简单的代码示例给我看呢,朋友。
加载更多回复(5)

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧