二维指针的初始化
我想定义一个二维数组arr,
每个元素保存的是class1类型的指针:
int M,N;
class1*** arr;
int main()
{
...
scanf("%d %d",&M,&N);
arr=new (class1**)[M];
for(int i=0;i<M;i++)
arr[i]=new (class1*)[N];
...
}
我这样写哪里错了?
谢了先。
问题点数:100、回复次数:7Top
1 楼Could(翻墙鹦鹉)回复于 2006-07-02 18:55:31 得分 0
汗,把括号去掉就好了。
为什么呢?
优先级别是什么?Top
2 楼triace_zhang(『雪梨码头』)回复于 2006-07-02 19:03:50 得分 1
二维数组:
int **arr;
scanf("%d %d",&M,&N);
arr=new int*[M];
for(int i=0;i<M;i++)
arr[i]=new int[N];
Top
3 楼OOPhaisky(异化$渴望成功~~)回复于 2006-07-02 19:28:48 得分 1
不能加括号吧,如果加了括号,编译器好像就会理解为“placement new(定位new操作符)”,好像是这样的。Top
4 楼OOPhaisky(异化$渴望成功~~)回复于 2006-07-02 19:42:31 得分 1
楼主画蛇添足了,有时候为了“保险”起见,经常加上括号,我也总这样做,呵呵Top
5 楼UPCC(杂食动物)回复于 2006-07-02 20:02:18 得分 1
char** s = NULL;
s = new char*[10];
for(int i=0; i<10; i++)
s[i] = new char[10];
or
char** s = NULL;
s = (char**)malloc(sizeof(char*)*10);
for(int i=0; i<10; i++)
s[i] = (char*)malloc(sizeof(char)*10);Top
6 楼lyskyly(浮生三笑)回复于 2006-07-02 20:45:16 得分 95
(int) a =0;//错误
(int) b[10];//错误
cout<<typeid((int)).name()<<endl;//错误
加了括号之后都是错误的,int是一个类型,而(int)是一条表示转型语句,不能拿来当int用
Top
7 楼bjzhaoxiao((super菜鸟))回复于 2006-07-03 17:11:07 得分 1
学习+接分。Top




