关于c++中数组指针的问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 09:31:32
1: #include<iostream>
2: using namespace std;
3: class Cat
4: {
5: public:
6: Cat(){itsAge=1;itsWeight=5;}
7: ~Cat(){}
8: int GetAge() const {return itsAge;}
9: int GetWeight() const{return itsWeight;}
10: void SetAge(int age){itsAge=age;}
11: private:
12: int itsAge;
13: int itsWeight;
14: };
15: int main()
16: {
17: Cat * Family[500];
18: int i;
19: Cat * pCat;
20: for (i=0;i<500;i++)
21: {
22: pCat=new Cat;
23: pCat->SetAge(2*i+1);
24: Family[i]=pCat;
25: }
26: for (i=0;i<500;i++)
27: {
28: cout<<"Cat #"<<i+1<<":";
29: cout<<Family[i]->GetAge()<<endl;
30: }
31: return 0;
32: }
我是菜鸟,对于指针的概念一直不是太明白,所以想借此机会好好问问~标上行号以便说明。
问题如下:
Q1.第17行中指针是什么意思,指

Q3: -> 是指针访问成员用的符号,是约定的,就像非指针访问用 .
Q2: new是C++的操作符,用来动态分配内存,返回内存地址。这里表示新建一个Cat对象,并返回了这个对象的地址(给指针pCat)
Q1: 第17行你的理解没错,指针的值是地址,指向Cat对象是说指针的值为某Cat对象的内存地址,用*p就能访问到这个对象。

Q1 这是一个指向类对象的指针数组,这就是说这里面的family的性质和cat一样的,知道结构体吧,就和结构体的指针是一样的,指向family的首地址啊,看c语言上的指针和结构体部分,在看数据结构理解更容易点
Q2这就是实例化一个对象,没有什么,说白了就申请一个内存空间,是手工的申请而已
Q3对象是指真的时候用->,其他时候就用. 例如cat cat;cat.SetAge(2*i+1);
是等价的,我建议看数据结构

Q3 -> 这个符号其实和 . 是一样的! 只是前面那个是声明变量时是以指针的形式声明的。后面那个是没有加指针符号。

比如说你声明的了Cat *a 如果你要访问Cat里面的就用 -> ,Cat a如果这样声明 那就是 .
Q 2自己声明的一段内存空间。

Q1

你先学类吧,学会类了,你就都知道了...
这个例子对于你来说有点超前了