BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #71988同步于 2013/6/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]小白问一个创建数组问题

lanjingling6
2013/6/20镜像同步8 回复
void change_matrix(const int M,const int N) { int a[M][N]; ..... 这段程序提示创建数组下标时,下标必须为常量表达式,那我该如何在输入数组大小后创建数组呢,用动态数组,也是提示要用常量表达式。
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
tonyjansan机器人#1 · 2013/6/20
// #include <stdlib.h> int m, n, i = 0, j; int *p, **matrix; scanf("%d", &m); scanf("%d", &n); p = (int*)malloc(m * n * sizeof(int)); matrix = (int**)malloc(m * sizeof(int*)); for(; i < m; i++) { *(matrix + i) = (int*)malloc(n * sizeof(int)); for(j = 0; j < n; j++) { p[n * i + j] = 0; matrix[i][j] = 0; } } //... for(i = 0; i < m; i++) { free(*(matrix + i)); } free(matrix); free(p); 【 在 lanjingling6 的大作中提到: 】 : void change_matrix(const int M,const int N) : { : int a[M][N]; : ...................
LafengHu机器人#2 · 2013/6/23
scanf("%d", m); scanf("%d", n); 。。。
tonyjansan机器人#3 · 2013/6/23
直接在发帖里手写的代码~没仔细检查~最近时间实在不太够用~原帖以修正~ 【 在 LafengHu 的大作中提到: 】 : scanf("%d", m); : scanf("%d", n); : 。。。
chen24828393机器人#4 · 2013/6/24
用STL多简单。 C++中用C的部分感觉真是异常的麻烦。。 【 在 tonyjansan 的大作中提到: 】 : 直接在发帖里手写的代码~没仔细检查~最近时间实在不太够用~原帖以修正~ :
tonyjansan机器人#5 · 2013/6/24
因为不太能确定LZ提问的场景是C还是C++,看它写的那个函数代码风格似乎像是C~所以我回复里也是用纯C风格来回复LZ的~ 如果是C++的话开辟少量堆内存还是type* v = new type这种方式比较好~除非一定要用到一些算法库中涉及的数据类型~否则还是自己来显式管理开辟的内存比较好吧~(个人是不太喜欢用STL,写嵌入式C写多了...勿怪) 【 在 chen24828393 的大作中提到: 】 : 用STL多简单。 : C++中用C的部分感觉真是异常的麻烦。。
chen24828393机器人#6 · 2013/6/24
我也欠考虑了,以为楼主是用C++进行编程。 new方式要比STL效率高一些,但每次都要主动的delete..new方式一旦多起来,或者代码跨度过长常常会忘记delete,而且还有new []和delete []的区别。 用一个类进行资源管理似乎是不错的选择,不过对于嵌入式这样资源比较紧张的系统,一般是不用资源管理类的吧 【 在 tonyjansan 的大作中提到: 】 : 因为不太能确定LZ提问的场景是C还是C++,看它写的那个函数代码风格似乎像是C~所以我回复里也是用纯C风格来回复LZ的~ : 如果是C++的话开辟少量堆内存还是type* v = new type这种方式比较好~除非一定要用到一些算法库中涉及的数据类型~否则还是自己来显式管理开辟的内存比较好吧~(个人是不太喜欢用STL,写嵌入式C写多了...勿怪) :
LafengHu机器人#7 · 2013/6/24
我直接照着你的敲。。 然后各种段错误。。 深深的对自己动态分配内存的能力产生怀疑。。 加了几个printf,发现了令人吃惊的真相。。 【 在 tonyjansan 的大作中提到: 】 : 直接在发帖里手写的代码~没仔细检查~最近时间实在不太够用~原帖以修正~ :
gsl2011机器人#8 · 2013/6/25
new,vector等搞定之