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

关于指针的写法

cclearner 发布于 2007-07-05 16:14, 1184 次点击
声明的指针数组
int *p_line[3]
......
cout<<p_line[2][3]<<endl;
这里为什么可以这样写?
不是指针名不加*代表内存地址么?
不是加*代表内容么?

还有一个写法:
class point
{public:
void move (int x,int y)
{X=x;Y=y;}
......
private:
int X,Y
}
int main()
{
point *ptr=new point[2];
ptr[0].move(5,10);
......
}
也是为什么不加*呢?
10 回复
#2
gzhsea2007-07-05 16:16

恩,帮顶一下,让高手解答~~~~~~

#3
cclearner2007-07-05 16:45
哎,有人知道么?
#4
aipb20072007-07-05 17:08
第一个似乎不对,完整代码给出来才知道。

第二个:刚才那个数组帖子里,不是说了ptr[0] 等价于 *(ptr+0)

这些都是书上有的哦!
#5
cclearner2007-07-05 17:13
嗯,我以为只是单方向等于,不是等价呢。谢谢哦
完整代码:
#include <iostream>
using namespace std;
int main()
{
int line1[]={1,0,0};
int line2[]={0,1,0};
int line3[]={0,0,1};

int *p_line[3];
p_line[0]=line1;
p_line[1]=line2;
p_line[2]=line3;

cout<<"Matrix test:"<<endl;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{ cout<<p_line[i][j]<<" "; }
cout<<endl;
}
}
#6
aipb20072007-07-05 17:25
#include <iostream>
using namespace std;
int main()
{
int line1[]={1,0,0};
int line2[]={0,1,0};
int line3[]={0,0,1};

int *p_line[3]; //声明一个数组,3个元素,元素类型是指向int的指针
p_line[0]=line1; //数组名可以当指针,所以这里三个初始化正确
p_line[1]=line2;
p_line[2]=line3;
//现在p_line就是一个2维数组,存放矩阵

cout<<"Matrix test:"<<endl;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{ cout<<p_line[i][j]<<" "; } //跟2维数组操作一样
cout<<endl;
}
}
#7
cclearner2007-07-05 17:27
嗯,p_line是数组名。。。。。。
晓得了
#8
野比2007-07-05 22:52

*-------------*
| 1 0 0 |line1 ───┐
*-------------* │
*-------------* │
| 0 1 0 |line2 ───┼─────┐
*-------------* │ │
*-------------* │ │
| 0 0 1 |line3 ───┼─────┼─────┐
*-------------* │ │ │
│ │ │
*-------------------------------*
|p_line[0] p_line[1] p_line[2]| 都是指针
*-------------------------------*
这样看起来就比较方便了..
后面的for语句也很容易理解了..

呼... 画起来好累哦...

#9
cclearner2007-07-05 23:10
哈,野比斑竹,你太有想象力了!能用这种符号画这样的图
#10
野比2007-07-05 23:42

呵.. 懒得拿画图画来着...

形象点 ...

#11
璇璇贺贺2007-07-06 03:07
形象
晓得
1