bi ru xia mian zhe ge lian jie. Wan quan shi zai luan shuo.
http://www.yesky.com/25/165025.shtml
自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
这句说错了,应该是operator new[]重载运算符号,不是内建立类型, new int[10]这个动作默认将引发 new operator
那么缺省行为是调用operator new,也就是返回一个指向 连续分配的10*sizeof(int)大小的内存的首地址
恩,好的,既然你认为new int(5);是一个void*指针?
那么请问以下哪些不合法:
1、cout<<*(new int(5))<<endl;
2、cout<<*(void*)(new int(5))<<endl;
3、void*p=new int(5);cout<<*p<<endl;
4、void*p=new int(5);cout<<*(int*)p<<endl;
你如果实验过。应该知道1和4才是正确的(不可能对*(void*)做cout)。
那么如果new int(5)是void*那么必然是不允许*(new int(5))的。
不错,我在MSDN上查过,是的确返回的void*,我想编译器自然也会因为new函数中的int而将void*转换成int*了。
不管MSDN上怎么说,总的来说就上面4个例子是绝对能够说明一切的
这句说错了,应该是operator new[]重载运算符号,不是内建立类型, new int[10]这个动作默认将引发 new operator
那么缺省行为是调用operator new,也就是返回一个指向 连续分配的10*sizeof(int)大小的内存的首地址
你这样些的话 就要 int(*p)[10] = new int[X][10]了,X代表任意常量整数;
C++中不一定要int(*)[]这种才是指向一行指针
我不明白你的是 []这个符号有什么难以明白的地方??本来 10*sizeof(int)每一份就是int的类型
当你 int *p = new int[10];p [0],p[1].....之类的都是相隔4个字节;
那么获得的值是完全正确的,为什么一定要 int(*p)[]才可以是指向行数组???