关于CArray的怪问题。。。。。。。。。。。。。。。。。。。。。。。。。
CArray<char*,char*> ArrayStr;
char str[10]="a",strOut[10];
ArrayStr.Add(str);
strcpy(str,"b");
ArrayStr.Add(str);
strcpy(strOut,ArrayStr.GetAt(0));
以上代码运行后,strOut中的内容是"b" , 为什么不是"a", 我先添加的"a"啊!而且取得是第一个元素。
为何是"b", 如何解决? 多谢各位!!!
问题点数:0、回复次数:12Top
1 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-04-04 18:30:05 得分 0
你存放的是数组地址,内容自己改变了Top
2 楼signoft(晴天)回复于 2005-04-04 18:30:40 得分 0
你CArray<char*,char*> 存的是char*
strcpy将str指针所指的内容变成b;
看看你输出strcpy(strOut,ArrayStr.GetAt(1));也是b
试试
CArray<char*,char*> ArrayStr;
char strA[10]="a",strB[10]="b",strOut[10];
ArrayStr.Add(strA);
ArrayStr.Add(strB);
strcpy(strOut,ArrayStr.GetAt(0));Top
3 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-04-04 18:30:48 得分 0
开始内容是a,后来改成b了,内容不就变了
Top
4 楼bowex()回复于 2005-04-04 18:33:20 得分 0
多谢!Top
5 楼surstar(我要写个操作系统出来……)回复于 2005-04-04 18:33:33 得分 0
自己改的,当然就变了哟!Top
6 楼wangjianddy(~~~~>_<~~~~)回复于 2005-04-04 18:35:43 得分 0
当然是B了,你定义的Array是保存指针的
也就是说ArraStr.Get(0)就是数组第一个元素的指针。
CArray<char*,char*> ArrayStr;
char str[10]="a",strOut[10];
//把str[0]的指针保存进了链表
ArrayStr.Add(str);
//又把str[0]的内容改成了b,这个时候,ArrayStr.Get(0)内容也是b
strcpy(str,"b");
//又把str[0]的指针加入链表,这个时候ArrayStr.Get(1)也指向了str[0]
ArrayStr.Add(str);
strcpy(strOut,ArrayStr.GetAt(0));
最后拷贝出来的内容肯定是b阿
Top
7 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-04-04 18:37:30 得分 0
把a ,b分别用不同的数组存放进去就好了Top
8 楼__A__(無羈の心)回复于 2005-04-04 20:06:07 得分 0
这就是使用数组要特别注意的地方,数组名是指向整个数组的指针Top
9 楼speedfirst(speedfirst)回复于 2005-04-04 20:13:44 得分 0
实际上ArrayStr[0] 和 str strOut指向同一个地方Top
10 楼Mackz(在相互)回复于 2005-04-04 20:51:44 得分 0
每次new一个指针。Top
11 楼angelcool(快乐需要创造)回复于 2005-05-27 12:09:34 得分 0
markTop
12 楼miladuo(辞职ing)回复于 2005-05-27 14:15:44 得分 0
存的是char*
又不是内容Top




