设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
请高手详细解释一下(C )
返回列表
发新帖
请高手详细解释一下(C )
[复制链接]
11
|
4
|
2011-3-17 07:26:41
|
显示全部楼层
|
阅读模式
#include\"iostream.h\"
class base
{
public:
char *number[20];
int n;
base()
{n=0;}
void set(char *number1)
{
number[n]=number1;
n;
}
};
void main()
{
base b;
char *p=new char[20];
for(int i=0;i2;i)
{
cinp;
b.set(p);
coutb.number
endl;
coutb.number[0]endl;
}
}
为什么b.number[0]会随着每次输入p的改变而改变啊???,详细一点,拜托
回复
使用道具
举报
千问
|
2011-3-17 07:26:41
|
显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">char *number[20];这是一个由20个字符指针组成的数组,注意你只定义了指针,没有分配容纳字符串的内存空间
number[n]=number1;这一句话把字符串指针指向了传入的字符串,连续执行的结果就把数组中的各个指针都指向了传入的字符串,这个字符串是什么呢?b.set(p);大家都是指向了p,所以,所有的字符串指针指向了同一个字符串,
所以每执行一次,b.number[0]都会改变,因为压根b.number[0]就不是一个独立的字符串,它其实就是个p
如果你每次都对p重新new char[20];就不会出现这个现象了,因为每个b.number[]都会指向不同的空间了
<h4 class=\"ask\">追问
<pre class=\"replyask-text\" id=\"content-1883718\">谢谢,麻烦再请教你一下,为什么我把cinp;改成
if(i1)
p=\"qwe\";
else
p=\"123\";
这种直接赋值的方法b.number[0]就没有错呢?这样跟cinp有什么区别啊?
回复
使用道具
举报
千问
|
2011-3-17 07:26:41
|
显示全部楼层
<pre class=\"replyask-text\" id=\"content-1888325\">那是因为\"qwe\"和\"123\"在编译时作为const的字符串而存在,他们占用各自不同的空间,也就是说i1时的p值和i=1时的p值是不一样的。所以就没错了啊。
你注意new分配的空间,程序结束时要用delete释放,否则会造成内存泄露
回复
使用道具
举报
千问
|
2011-3-17 07:26:41
|
显示全部楼层
<pre class=\"replyask-text\" id=\"content-1888943\">如果我每次都对p重新new char[20],那最后是不是分配了很多次内存啊?等下要怎么delete?
回复
使用道具
举报
千问
|
2011-3-17 07:26:41
|
显示全部楼层
<pre class=\"replyask-text\" id=\"content-1890415\">当然不能直接new赋值给p,那样原先申请的内存就丢失了,一种方式是你给b.number分配好空间,比如初始化时b.number每个元素分配一段内存,set函数中改成strcpy复制p的内容,这样析构函数中,把他们全部delete掉。 或者直接使用字符串数组,而不是指针数组,把number搞成20个元素的字符串数组,每个字符串包含若干字节。这样不用new,也就不用delete了
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
我想申请一个建设银行金卡,只要不用排队,直接走金卡窗口的就可以!急-急-
2
INTER显卡问题
3
崇文50中和11中的高中放学时间
4
有芝加哥公牛队的QQ群
5
物理题太难唠 大家说啊 急急急急急急
6
电子信息工程考研录取线分数
7
电子科技大学成都学院转专业容易吗?学长学姐进啊!
8
一吹空调手腕疼是怎么回事
9
诺基亚5310上UC,上QQ,其他等等功能可以最小化
10
百度提问制定我国侵权行为是否可以鉴定其他国家的立法经验,是侵权行为法在民法体系中是有相对独立性
11
广东在哪里可以报自考
12
天津和河北和北京有哪些家电生产厂家
13
姜皓瀚韩文怎么写?
14
大航海时代4的非洲在哪啊,我找了一个礼拜
15
请大家帮我看下这台电脑的配置
16
找免费看玄幻,网游小说的网站。要能全文阅读的。更新能跟上的。
17
Word平面左右分布不均匀怎么办
18
我按你那样做了,但是显示:已加载comres.dll,但没有找到DllRegisterServer输入点
19
我的电脑唱歌为什么会有重音
20
梦见蝙蝠的问题非常怪异
21
中考试怎么批分的
22
推荐下初级厨师的专业装备吧!~
23
我们分手了,但她还是老找我。
24
佛家弟子名字为什么第一个字为慧
25
死神剧场版封印的狂剑哪里有下载
26
寻歌,急。!
27
欧意油烟机 cxw-180-s300 是免拆洗的吗?出厂底价多少?
28
qq宠物怎么样去我好友的桌面和她的宠物玩呢?
29
?,忠言逆耳利于行
30
唯有香如故 全词!最好有翻译谢谢!
31
长春金棕榈酒店吃的怎么样
32
新浪侠义道充什么点卡
33
生产车间用的漏电保护器、插座等应作怎样会计处理?
34
武林外传双月兔儿爷和双月幻龙兽我要哪个好
35
谁帮我推荐一个好玩的2D(3D也凑合,不过最好2D),非回合制网游
36
英语完成句子000
37
如何鉴别真金戒指
38
这种招聘可信吗?
39
求孟汉娜电影版的一首歌曲!!!
40
什么部门可以出具免上节育环的证明
41
语法问题
42
淄博的火锅
43
魔兽装备上 有绿字加属性的还有什么颜色的屠兽什么的,是什么意思,怎么弄上的?
44
求东方神起《hug》的钢琴谱
45
如果你很想一个人,却找不到他,也忘记不了,该怎么办?
46
学生黑色正装裙搭配什么袜套比较好
47
麦兜就一集还是好几集,还是好几部?
48
开新网段问题
49
石家庄 h&m
50
血液科的朋友帮忙看一下
51
求一部电视剧,其中有一个老道士自以为降服了一个狐狸精,站在山顶哈哈大笑走了,但过后狐狸精又出现了。
52
浙江教育学院(本科)
53
郑州轻工业学院3本专业有法律吗?
54
我累了 我哭了 我对你的爱彻底伤透了 是那首歌啊!???
55
面试的时候,考官一般会问上份工作什么原因离职?该怎么回答?
56
北京哪有内衣招聘
57
现在电脑的主流配置
58
河北工程大学丛台校区的住宿条件
59
夜打头的成语
60
临清北环路路宽
61
古时候怎么打仗的?
62
从武汉晚报到台北一路坐什么车子
63
【函数】帮帮忙
64
办有机农产品公司要什么条件
65
类似《我们无处安放的青春》的小说····
66
口袋妖怪怎么把火红的精灵传到宝石版
67
我今年15岁腰围83 臀围96 怎么办啊?
68
请教各位同行朋友,海运提单的被保险人是写自己还是写客户的名字
69
N95老是死机问题。
70
哈尔滨万达影城现在周二还半价吗?
71
急求撞人后的腰椎病变等相关问题解答(涉及到医疗及撞车事故等)
72
怎样点亮Q上所有的图标?
73
QQ空间怎么进不去啊
74
QTA网络时代的又一疯狂产物
75
在北京生日当天能打折的地方
76
请问我电脑光驱是cd-rw crx880a 可以刻录系统安装光盘吗?…
77
什么是主办制
78
我在电脑上设立了密码,忘了,怎么办
79
福州宝龙广场金逸影院2009年8月16日放映什么电影
80
穿越我国领土距离最长的纬线是:
81
N-GAGE怎么不刷新游戏
82
南京正德学校怎么样啊?
83
成都的锦里和春熙路两块,好玩好吃的地方
84
晋中驾校什么时候开始考科2?
85
是不是肺结核?
86
男人同时爱着两个女人怎么办
87
2009年山西大学双学位什么时候报名
88
开机后就会出现一个带红差的窗口怎么办呀?
89
问一下由中国传媒大学到北京十三中高中部的乘车路线
90
09福建理326能上闽西职业技术学院
91
真三国无双OL 燕扇问题
92
海贼王熊救了路飞后自己会不会有事啊
93
ADSL怎么加快电脑的联网速度?
94
陕西北路澳门路1622号是什么地方啊
95
NOKIA 谁能帮偶解锁啊```
96
重庆有没有哪些兼职需要普通话一级证书的?
97
半透明的图怎么不可以定义成笔刷
98
二氯异氰脲酸钠如何使用
99
怎么能找到我遗失的qq好友?
100
DNF 萝卜