标题:为什么~~
只看楼主
datoushen
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-3-24
 问题点数:0 回复次数:9 
为什么~~

我想问一下啊!
这是为什么了啊
#include<iostream>

using namespace std;

int main()
{
int a[5]={1,2,3,4};
cout<<a<<endl;
cout<<&a<<endl;

cout<<a+1<<endl;
cout<<&a+1<<endl;

system("pause");
return 0;
}

为什么a和&a地址值一样,但a+1和&a+1不一样呢!!

搜索更多相关主题的帖子: include system return 
2007-04-01 17:54
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
得分:0 

这个是优先级问题

&a+1改成&(a+1)结果就一样了


自我放逐。。。
2007-04-01 18:40
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
ls,a+1表示的是2的地址,是一个地址值,取它的地址会是什么?
而且我也不知道为什么&a就可以...

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-04-02 15:05
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
得分:0 
以下是引用datoushen在2007-4-1 17:54:45的发言:

我想问一下啊!
这是为什么了啊
#include<iostream>

using namespace std;

int main()
{
int a[5]={1,2,3,4};
cout<<a<<endl;
cout<<&a<<endl;

cout<<a+1<<endl; //a+1: a中第二个元素地址,也就是a[1]的地址;

cout<<&a+1<<endl; /*&a+1,&a类型为指向5个int数组的指针,所以&a+1相当与a的值加5个int指针的大小,
值等于a+5 ===>a的值加5个int的大小,值等于&a[5] */
cout<<&a[5]<<endl;
system("pause");
return 0;
}

为什么a和&a地址值一样,但a+1和&a+1不一样呢!!

[此贴子已经被作者于2007-4-2 22:55:32编辑过]


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-04-02 22:53
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

你确定你编译过了?


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-04-05 10:49
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
得分:0 

#include<iostream>

using namespace std;

int main()
{
int a[5]={1,2,3,4};
cout<<a<<endl;
cout<<&a<<endl; //加一个&后就由列指针(指向元素)变成行指针(指向数组)了,反之,如果在行指针前加一个*,就会变
//列指针

cout<<a+1<<endl;
cout<<&a+1<<endl; //由于&a是一个行指针,所占字节是一个由五个int元素组成的数组的大小,+1就要加一个行指针
//所占的大小

system("pause");
return 0;
}



运行一下下面的就知道类型了

#include<iostream>

using namespace std;

int main()
{
int a[5]={1,2,3,4},*b;
b=a;
cout << typeid( a ).name() << endl; //下面分别为a,a[0] 的类型
cout << typeid( &a ).name() << endl;//
cout <<sizeof(&a)<<endl;
cout <<sizeof(b)<<endl;
system("pause");
return 0;
}


雁无留踪之意,水无取影之心
2007-04-05 11:49
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
得分:0 
以下是引用wfpb在2007-4-5 10:49:59的发言:

你确定你编译过了?

能编译吧。。。


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-04-05 12:11
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
我编译不过去啊!


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-04-05 15:07
qjcnlhnh
Rank: 1
等 级:新手上路
帖 子:215
专家分:0
注 册:2007-4-5
得分:0 
&amp;(a+1),先进行A+1,指向数组第一个元素,然后进行取地址运算符,结果是什么了?
2007-04-05 15:50
datoushen
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-3-24
得分:0 
知道了
多谢~~~

2007-04-05 16:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-128532-1-1.html




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

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