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