C 没有()的sizeof有什么作用?
当我问《什么》的作者时,他只是取笑我C 没有()的sizeof有什么作用?,c,sizeof,C,Sizeof,当我问《什么》的作者时,他只是取笑我 sizeof*q是否。。。 他告诉我这是一个非常基本的C问题,我应该检查一下。 但是我环顾四周,以前没有看到有人问我,我现在就自己做: 如果C中的sizeof没有括号和/或类型,它会做什么?sizeof是一个运算符,而不是一个函数,因此如果操作数是一个表达式(但通常使用它们),则不需要()sizeof*q==sizeof(*q)。请注意,如果操作数是一种类型,则需要使用(),因此sizeof(int)(参见示例) 现在,即使是网络也充满了关于C。。。世界正在
sizeof*q
是否。。。
他告诉我这是一个非常基本的C问题,我应该检查一下。
但是我环顾四周,以前没有看到有人问我,我现在就自己做:
如果C中的
sizeof
没有括号和/或类型,它会做什么?sizeof
是一个运算符,而不是一个函数,因此如果操作数是一个表达式(但通常使用它们),则不需要()
sizeof*q==sizeof(*q)
。请注意,如果操作数是一种类型,则需要使用()
,因此sizeof(int)
(参见示例)
现在,即使是网络也充满了关于C。。。世界正在快速变化:-)
sizeof运算符用于确定指定数据类型在内存中占用的空间量。要使用sizeof,关键字“sizeof”后面跟着一个类型名或表达式(可能只是一个变量名)。如果使用类型名,则它必须始终用括号括起来,而表达式可以用括号指定,也可以不用括号指定
和sizeof的妄想症一样。它是一个右侧一元运算符,因此它将其正确大小视为操作数。
据我所知,在将sizeof与基本数据类型一起使用时,必须执行此操作。
当你有一个变量
int a
时,你可以用两种方法检查它的大小,参数不是必须的:sizeof a
,sizeof(a)
也会用同样的方法。但是,当检查int本身的大小时,只有
sizeof(int)
会起作用。与parens的作用相同-它返回传递给它的任何内容的大小,在这种情况下,返回q
指向的任何内容的大小
这一点有些不太清楚,尤其是当我们涉及到复杂的调用<代码> MaloC 和
因此,如果我们在代码< >5.5.3> /代码>一元运算符第1段中查看< <代码>语法> <代码>的语法如下:
sizeof unary-expression
sizeof ( type-name )
不同的是,如果没有括号,您就不能使用类型名称,而第2段运算符的大小(强调部分):
sizeof运算符生成其操作数的大小(以字节为单位),该操作数可以是
表达式或类型的括号名称[…]
为了完整起见,您可能想知道如果我们有括号,是否可以将sizeof
与表达式一起使用,并且答案是肯定的,因为一元表达式本身可以包含括号。查看这一点的最简单方法是查看标准草案中的A.2.1节表达式,并按照如下语法进行操作:
unary-expression -> postfix-expression -> primary-expression -> ( expression )
sizeof
是一个运算符,特别是像一元&
或++
这样的一元运算符。它采用一元表达式或由参数包围的类型名作为其操作数
语法是
sizeof unary-expression
sizeof ( type-name )
表达式sizeof*q
和sizeof(int)
是等效的,就像sizeof q
和sizeof(int*)
一样 我可能错了,但我相信sizeof(expr)和sizeof expr是一样的。如果我错了,肯定会有人纠正我的!相关:
sizeof unary-expression
sizeof ( type-name )
int *q;