| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1435 人关注过本帖
标题:C++里动态数组与指针的问题
只看楼主 加入收藏
sy_141618
Rank: 1
等 级:新手上路
威 望:1
帖 子:68
专家分:0
注 册:2006-6-18
收藏
 问题点数:0 回复次数:18 
C++里动态数组与指针的问题

1 string *psa=new string[10];
2 cin >> *psa;
3 cout << *psa;

Q1 书上说动态分配的优点是能在运行时决定数组大小,但1是书上第1个例子的1句话,23是我加上去的,运行仍然通过,那这个[10]是什么意思呢? 作业要你处理可变长的输入到一个字符数组,所以我就这样写了。

Q2 while(cin >> *psa) 到底在输入什么字符的情况下循环才会退出?我输入\0没反应。。

Q3 int *pia2=new int[10]();
书上说()就是初始化,对于这个内置函数来说就等于初始化为0了
但是cout << *pia2;后输出3998880


[此贴子已经被作者于2007-7-7 13:44:27编辑过]

搜索更多相关主题的帖子: 指针 动态 
2007-07-07 13:42
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
10表示有10个这样的string

F6可以退出

天行健,君子以自强不息!!QQ:68660681
2007-07-07 13:48
sy_141618
Rank: 1
等 级:新手上路
威 望:1
帖 子:68
专家分:0
注 册:2006-6-18
收藏
得分:0 
我是想退出循环继续下面代码,类似判断这样的意思,就是输入的只能是字母和数字吧~不好意思,前面没把限制说清楚。
2007-07-07 13:58
sy_141618
Rank: 1
等 级:新手上路
威 望:1
帖 子:68
专家分:0
注 册:2006-6-18
收藏
得分:0 

1 string *psa=new string[10];
2 *psa="1234567890123"
3 cout << *psa;

分配了10个大小的STRING,但是为什么我这样编写代码,编译运行都能正常通过呀?那这个10还有什么用?

2007-07-07 14:01
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
以下是引用sy_141618在2007-7-7 13:58:20的发言:
我是想退出循环继续下面代码,类似判断这样的意思,就是输入的只能是字母和数字吧~不好意思,前面没把限制说清楚。

F6同样可以帮你达到这样的功能。


天行健,君子以自强不息!!QQ:68660681
2007-07-07 14:17
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
以下是引用sy_141618在2007-7-7 14:01:16的发言:

1 string *psa=new string[10];
2 *psa="1234567890123"
3 cout << *psa;

分配了10个大小的STRING,但是为什么我这样编写代码,编译运行都能正常通过呀?那这个10还有什么用?

这个时候*psa等同于string[0],自然正确。。


天行健,君子以自强不息!!QQ:68660681
2007-07-07 14:17
sy_141618
Rank: 1
等 级:新手上路
威 望:1
帖 子:68
专家分:0
注 册:2006-6-18
收藏
得分:0 

string *psa=new string[0];
*psa="fsdafasdfafda";
产生运行时错误。。。
但是把0改成1就可以了~
书上说“[0]是合法的,但是不能进行任何解引用操作,因为它毕竟没有指向任何元素。”

果然哦。哈。。F6可以退出循环。。怎么实现当输入的是数字就退出循环呢?

2007-07-07 14:35
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
以下是引用sy_141618在2007-7-7 14:35:01的发言:

string *psa=new string[0];
*psa="fsdafasdfafda";
产生运行时错误。。。
但是把0改成1就可以了~
书上说“[0]是合法的,但是不能进行任何解引用操作,因为它毕竟没有指向任何元素。”

果然哦。哈。。F6可以退出循环。。怎么实现当输入的是数字就退出循环呢?

汗,0当然会错,因为这个字符串数组中元素个数为0,编译合法,运行会错(即不可以对它进行操作)
要想输入数字就退出,那就自己判断吧


天行健,君子以自强不息!!QQ:68660681
2007-07-07 14:38
天空の城
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-7-1
收藏
得分:0 

因为这个字符串数组中元素个数为0,编译合法

编译不合法,不能给0,int a[0]编译回出错.


2007-07-07 14:42
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
以下是引用天空の城在2007-7-7 14:42:34的发言:

因为这个字符串数组中元素个数为0,编译合法

编译不合法,不能给0,int a[0]编译回出错.

你这是静态数组,当然不合法,用new 生成的动态数组就可以为0


天行健,君子以自强不息!!QQ:68660681
2007-07-07 15:01
快速回复:C++里动态数组与指针的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022768 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved