作者QQQQ (终於注册好罗)
看板C_and_CPP
标题Re: [问题] 小问题
时间Fri Jun 19 01:47:30 2009
※ 引述《imprazaguy (Wayne)》之铭言:
: ※ 引述《QQQQ (终於注册好罗)》之铭言:
: : #include<iostream>
: : using namespace std;
: : int main()
: : {
: : char array[]={'a','b','c','d'};
: : cout<<&array[0];
: : system("pause");
: : return 0;
: : }
: : 抱歉~有点蠢的问题
: : 想厘清些小观念
: : 我只能知道此阵列的起始位址(cout<<&array)
: 事实上array就代表起始位址,不需要用 &array
: 之所以不会印位址是因为 cout 碰到 char*型态的资料 会当成字串输出
: 所以你改成
: cout << (void*)array;
: cout << (void*)array[0];
: 就没问题
: : 无法表示出各字元对应的位址嘛??
: : (会出现乱数)
: : 和下比较:
: : #include<iostream>
: : using namespace std;
: : int main()
: : {
: : int num[]={1,2,3,4};
: : cout<<&num[0];
: : system("pause");
: : return 0;
: : }
: : 此整数阵列就可对应出个别位址
: : 我实在搞不懂两者差异XD
: : 抱歉~真是个蠢问题
再小小延伸一下
程式如下:
#include<iostream>
using namespace std;
int main()
{
char array[]={'a','b','c','d'};
cout<<(void*)array<<endl;
cout<<(void*)array[0];
system("pause");
return 0;
}
为何两者位址不一样呢??
把array看成指标
array指标的位址不是等於arrray[0]的位址嘛??
我真的混乱了XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.150.202
1F:推 ianfang:cout<<(void*)(&array[0]); 06/19 01:51
2F:→ ianfang:你真的混乱了... 06/19 01:52
3F:推 ianfang:你先了解array[0]和&array[0]和array的关系吧 06/19 01:57
4F:推 QQ29:楼上 他是写(void*)array[0] 没有加& ~ 所以印出来不一样 06/19 02:00
5F:→ QQ29:不过 cout<<(void*)array<<endl;印出来是甚麽 我也不清楚耶 06/19 02:02
6F:→ QQ29:应该是印97吧 'a'的ASCII 06/19 02:02
7F:推 ianfang:我知道 所以我跟他说要加 & ...才会一样 06/19 02:03
8F:→ QQ29:喔喔! 也许是上一篇打那样误导了@@ 06/19 02:03
9F:→ ianfang:&array[0]才会跟array一样 要叫他了解我却自己说明了... 06/19 02:03
10F:推 QQ29:不过 该怎麽解释&array 和array 是一样呢?? 06/19 02:06
11F:推 zlw:就是规定,背起来就好啦。而且只有值一样,资料型态不一样 06/19 03:29
12F:→ QQQQ:我懂了~感谢大家 06/19 21:56