主题:C++類對象名
josephkwok
[专家分:530] 发布于 2010-06-28 08:35:00
C++中類對象的名代表的是什麼呢???
數組名代表的是數組的首地址.
回复列表 (共5个回复)
沙发
bruceteen [专家分:42660] 发布于 2010-06-28 13:52:00
C++中int对象的名代表什么?
板凳
bruceteen [专家分:42660] 发布于 2010-06-28 13:53:00
數組名代表的是數組的首地址 --- 瞎说
3 楼
josephkwok [专家分:530] 发布于 2010-06-28 17:25:00
我記得書上是這樣說的.
4 楼
雪光风剑 [专家分:27190] 发布于 2010-06-29 06:51:00
数组名可不是仅仅数组首地址……
数组名有着指向整片数组内存空间等重任
5 楼
eastcowboy [专家分:25370] 发布于 2010-06-29 13:21:00
名字就是名字,一个东西的名字就代表了这个东西。比如你的名字可以代表你(忽略重名的话)。
根据这个推导,数组名代表的自然就应该是数组。
当我们写:
int a[10];
int* p = a;
的时候,并不是说a就是数组的首地址。应该说a代表了一个数组,只不过它可以隐式的转化为指针(就像int可以隐式的转化为char一样),然后把转化得到的指针拿去对p进行初始化。
对比一下:
int n = 5;
char c = n;
这时我们绝对不会说n代表了一个char。应该说n代表了一个int,而int可以隐式的转化为char,然后把转化得到的char拿去对c进行初始化。
数组不是指针,数组的名字也不是数组的首地址。正确的理解应该是:数组可以隐式的转化为指针,而转化所得到的指针所指向的位置正好就是数组的首地址。
也许下面的内容更能说明为什么“數組名代表的是數組的首地址”是错误的。看代码:
int a[10];
int s = sizeof(a);
这里,如果数组名“a”真的代表一个地址,那么对这个地址进行sizeof操作,应该得到多少呢?如果a真的代表某个数组的首地址,以目前PC机上流行的几个编译器来看,结果应该是4。实际的运行一下,看看结果是多少呢?正确答案是40(Visual C++ 2008 Express编译运行),这正好是10个int的大小。
在上述情况下,“數組名代表的是數組的首地址”这个说法是不成立的。sizeof(a)就是取得数组a的大小,而不是数组a的首地址的大小。可见,数组名代表的是数组,而不是数组的首地址。
同样的,类的名字代表了类,对象的名字代表了对象,函数的名字代表了函数。That is all。
我来回复