2016-08-19 127 views
-2

例如,我们可以说指针值指定了一个对象吗?

int a = 10; 

显然,a指定int对象,其存储10。但是说&a指定一个对象是否是真的?由于&a是一个地址值,我认为它在内存中指定了一个字节对象!

+2

我实际上并不知道你打算“指定”什么意思,但对我来说'&a'是一个指向某个“对象”的指针。 – John3136

+0

'a' *是* int * *变量*,其中*包含*'10'。没有关于它的“指定”或“对象”。因此,“a”的地址也没有“指定对象”。无论“a”是什么,“&a”都是它的指针。 – EJP

+0

@EJP你是否说C中的术语'指定'和'对象'不是标准术语? – Jin

回答

2

在C标准的术语中,左值表达式可以指定一个内存位置。 &a不是左值,所以它不指定任何东西。

+0

你能解释为什么指针值不是左值吗?根据ISO C11 6.3.2.1,它说左值是可能指定对象的表达式。由于指针值指定了一个字节的对象,我认为指针值应该是一个左值! – Jin

+0

你能解释一下左值与这个问题有什么关系吗? – EJP

+0

@Jin指针值不指定对象。此代码中没有任何单字节对象,'int'可能是2或4个字节。 –

相关问题