Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 没有()的sizeof有什么作用?_C_Sizeof - Fatal编程技术网

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 和 SeZOOS,所以我认为最好始终使用PARNS。

因此,如果我们在代码< >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;