醉酒老仙壬子:C++程序中,原"#difine"语句定义的函数怎么改成可变量?

来源:百度文库 编辑:高考问答 时间:2024/05/03 06:12:09
有这样一段定义:
#include "stdafx.h"
#include <iostream.h>
#define n 8
#define m 6
void main()
{
int i,j,count=0,k=0,h;
int MM[n][2]={0,0}; //用数组表示有向图
int t[m]={0}; //输出拓扑序列的数组
int s[m]={0}; //有向图个顶点的入度
int flag[m]={0}; //标记已删去的顶点
……

我想把m的数值变成可以人为输入的变量,不知应该怎样替换?
上次有大侠帮忙让我用
cin>>M;
int* t = (int*)malloc(M * sizeof(int));
这个语句,
我不太会用,一见指针就晕了。。
我是否应该把这段语句改为:
……
#define n 8
void main()
{
cin>>m;
……
int * t = 0;
t = (int *)malloc(m * sizeof(int));
memset(t, 0, m * sizeof(int));
……
如果n也变手动修改
“int MM[n][2]={0,0};”语句应该怎么改呢?
n与m做为数组的大小,不可以是int出来的变量哦!

如果不习惯看到太多指针,用C++的语法或许好些,类似下面这种:
int *p = new int[m];
int *p = new int[n][2];

如果都用动态内存分配,就不要希望用数组的初始化方法了,直接用memset初始化就行了。
可以参考http://www.jstvu.com/wlkj/cc/help2.htm中的堆内存分配。

#include "stdafx.h"
#include <iostream.h>
void main()
{
int n,m;
cin>>n;cin>>m;//这里可以加提示
int i,j,count=0,k=0,h;
int MM[n][2]={0,0}; //用数组表示有向图
int t[m]={0}; //输出拓扑序列的数组
int s[m]={0}; //有向图个顶点的入度
int flag[m]={0}; //标记已删去的顶点