注册 登录
编程论坛 C++教室

[求助]关一个关于数组和指针的问题

dafei301 发布于 2007-09-19 09:10, 547 次点击
int a[] = {0,1,2,3,4,5};
int *p = a;
cout << "a内容 = " << a << endl;
cout << "a的地址 = " << &a << endl;
cout << "p的内容 = " << p << endl;
cout << "指针p的地址 = " << &p << endl;

输出的内容是:
a内容 = 0012FF2C
a的地址 = 0012FF2C
p的内容 = 0012FF2C
指针p的地址 = 0012FF20


为什么a的内容会和地址相同呢.

指针是个变量,这个变量是存另一个变量的地址的变量对不对.既然是个变量,它占几个字节啊.地址是个什么样的数值呢?整型还是指针类型什么的.希望哪位高人能给小白说说哦.....如果问的太白痴了,别笑俺啊...

[此贴子已经被作者于2007-9-19 9:11:29编辑过]

8 回复
#2
chen78062007-09-19 10:28

数组名就是首地址。你上面的地址是16进制表示的。

[此贴子已经被作者于2007-9-19 10:29:18编辑过]

#3
天使梦魔2007-09-19 11:25
指针没有空间存放东西吧
你那上面应该是int *p = &a;吧
#4
dafei3012007-09-21 12:41
回复:(天使梦魔)指针没有空间存放东西吧你那上面应...

a就是地址吧,数组第一个元素的地址。

#5
jonc2007-11-02 17:21

a本来就是数组a[]的地址
&a其实没有意义
同理p 也是地址
&p也是一样的

#6
jonc2007-11-02 17:24
对了
3楼的朋友
int *p=&a
是错误的
初始化是不对的
除非你想使用双重指针
#7
xiaxin2007-11-02 19:05
#include<iostream>
using namespace std;
int main()
{
int a[]={0,1,2,3,4,5};
int *p=a;
for(int i=0;i<6;i++)//数组得用循环输出
cout<<"a内容="<<a[i]<<endl;//a是数组名即元素的首地址,a[i]才是对应的元素值
cout<<"a的地址="<<a<< endl;
for(;p<a+6;p++)//指针的变化
cout<<"p的内容=" <<*p<< endl;//*p表示指针所指的变量而不是指针
p=a;//前一个循环使p的变化了,使其复位
cout<<"指针p的地址="<<p<< endl;
return 0;
}
#8
hegj2007-11-02 20:48
数组名a就是数组a的地址,也是数组第一个元素a[0]的地址。
数组的内容要用下标运算符[]来访问。

指针就是放地址的变量。指针的内容就是地址。可以用解除引用运算符*,来间接访问指针指向的变量。
指针是变量,当然也有自己的地址,可以用取址运算符&来取得它的地址。

#9
冷云逸2007-11-02 22:19
a[]的内容不能像那样输出的
1