Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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 “与”的区别是什么;结构用户*;及;结构用户*“;?_C_Pointers_Struct_Structure_Dereference - Fatal编程技术网

C “与”的区别是什么;结构用户*;及;结构用户*“;?

C “与”的区别是什么;结构用户*;及;结构用户*“;?,c,pointers,struct,structure,dereference,C,Pointers,Struct,Structure,Dereference,执行struct user*bob和struct user*bob在语义和技术上有什么区别 根据定义,它被称为thing*bob或thing**bob,这很有意义,因为它属于struct*(或指向struct的指针)类型 另一方面,我们也可以做事*bob或事**bob 以程序为例: struct user { int age; int *p_age2; }; int main() { struct user bob; struct user* p_bob = &bob; 我不确定这是

执行
struct user*bob
struct user*bob
在语义和技术上有什么区别

根据定义,它被称为
thing*bob
thing**bob
,这很有意义,因为它属于
struct*
(或指向struct的指针)类型

另一方面,我们也可以做
事*bob
事**bob

以程序为例:

struct user
{
int age;
int *p_age2;
};

int main()
{
struct user bob;
struct user* p_bob = &bob;
我不确定这是否纯粹是一个编码风格的问题,或者在某个地方是否真的有一点不同。我很想知道为什么其中一个更有意义。另一个需要注意的重要事项是,有时结构标记和结构变量之前不能有任何类型,所以也许user*会更有意义

执行
struct user*bob
struct user*bob
在语义和技术上有什么区别

对于编译器来说,没有,尽管后面的语法更清楚,因为行
struct user*bob,alice
将bob声明为指向
struct user
的指针,alice声明为
struct user

执行
struct user*bob
struct user*bob
在语义和技术上有什么区别


对于编译器来说,没有,尽管后面的语法更清楚,因为行
struct user*bob,alice
将bob声明为指向
struct user
的指针,alice声明为
struct user

这是一回事。两种形式都解析为
struct user(*bob)。在C(和C++)中,声明中的
*
运算符总是绑定到声明器,而不是类型说明符。在这种情况下,空格并不重要。就风格而言,美国老C屁更喜欢
T*p(因为它更准确地反映语法,同时在声明多个项目时不那么混乱),而C++程序员更喜欢<代码> t*p;code>(因为它强调了
p
具有指针类型的事实)。这是一样的。两种形式都解析为
struct user(*bob)。在C(和C++)中,声明中的
*
运算符总是绑定到声明器,而不是类型说明符。在这种情况下,空格并不重要。就风格而言,美国老C屁更喜欢
T*p(因为它更准确地反映语法,同时在声明多个项目时不那么混乱),而C++程序员更喜欢<代码> t*p;code>(因为它强调了
p
具有指针类型的事实)。如果要在同一行代码中声明不同类型的变量,可以说没有理由谈论清楚的内容。如果要在同一行代码中声明不同类型的变量,可以说,你没有理由谈论清楚的事情。