回 帖 发 新 帖 刷新版面

主题:C++類對象名

C++中類對象的名代表的是什麼呢???
數組名代表的是數組的首地址.

回复列表 (共5个回复)

沙发

C++中int对象的名代表什么?

板凳

數組名代表的是數組的首地址 --- 瞎说

3 楼

我記得書上是這樣說的.

4 楼

数组名可不是仅仅数组首地址……
数组名有着指向整片数组内存空间等重任

5 楼

名字就是名字,一个东西的名字就代表了这个东西。比如你的名字可以代表你(忽略重名的话)。
根据这个推导,数组名代表的自然就应该是数组。

当我们写:
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。

我来回复

您尚未登录,请登录后再回复。点此登录或注册