我想问一下啊!
这是为什么了啊
#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<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编辑过]
#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;
}