您的位置:程序门 -> c/c++ ->



请问一个指针和数组的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请问一个指针和数组的问题
发表于:2007-10-29 21:59:39 楼主
假设有一个类testclass;

class   testclass;

testclass**   tp   =   new   testclass*[10];
tp[0]   =   new   testclass();
tp[1]   =   new   testclass();

cout   < <   "addr:   "   < <   tp   < <   endl   < <   tp[0]   < <   endl   < <   tp[1]   < <   endl;
....

我想问下输出的三个值之间有什么关系?
发表于:2007-10-29 22:07:471楼 得分:0
tp   =   指向数组testclass的首地址.     该数组在堆中被产生出来.但tp是堆栈中.
tp[0]   =   指向该数组第1个无素所在的地址(该元素下标为0).     该元素在堆中被产生出来.
tp[1]   =   指向该数组第2个元素所在的地址(该元素下标为1).     该元素在堆中被产生出来.
发表于:2007-10-29 22:08:482楼 得分:0
看错了题.以上答案不算数.对不住.
发表于:2007-10-29 22:14:253楼 得分:0
这三个值没有关系。
但是   &tp[0],&tp[1]跟tp有关系。因为tp=&tp[0]     tp+1=&tp[1]
tp内存放的是testclass*数组的在堆中的起始地址,
tp[0]内存放的是testclass在堆中分配的地址。
发表于:2007-10-29 22:17:154楼 得分:0
tp是这个二元指针的地址,   tp[0]是二元指针地址指向的第一个值,通理tp[1]是第二个值
发表于:2007-10-29 22:57:495楼 得分:0
tp---> ¦tp0 ¦tp1 ¦
               
发表于:2007-10-29 22:59:106楼 得分:0
看错了题.以上答案不算数.对不住.
==================================
哇哈哈,兄弟你今天怎么也和我一样啊?刚才我也给人回错一个,提交以后才发现,赶忙道歉
发表于:2007-10-29 23:14:157楼 得分:0
loops答的好  

偶就   只能接分了
发表于:2007-10-30 14:00:288楼 得分:0
tp是个二维数组,   只不过是testclass类型的;   那么tp表示这个二维数组,可以进行[][]运算,   比如tp[i][j]取数组中i行j列的元素,   同时tp也是指针,   指向二位数组头地址.
至于tp[0]是个一维数组,   可以进行[]运算,   top[0][i]就是去数组中的第i个元素,   同理tp[0]也是指针,   指向这个tp[0]一维数组.
tp[1]类似...
 


快速检索

最新资讯
热门点击