当前位置:  开发笔记 > 编程语言 > 正文

"struct foo*"和"foo*"之间的区别,其中foo是一个结构?

如何解决《"structfoo*"和"foo*"之间的区别,其中foo是一个结构?》经验,为你挑选了2个好方法。

在C中,如果foo是结构,那么在编写"struct foo"而不仅仅是"foo"之间是否存在差异?

例如:

struct sockaddr_in sin;
struct sockaddr *sa;

// Are these two lines equivalent?
sa = (struct sockaddr*)&sin;
sa = (sockaddr*)&sin;

谢谢/ Erik



1> Mehrdad Afsh..:

实际上,在标准"C"中,需要指定struct关键字.这在C++中是可选的.

这就是有些人定义这样的结构的原因:

typedef struct foo { ... } bar;

能够bar代替使用struct foo.但是,某些C编译器不会强制执行此规则.



2> Avi..:

是.在C(而不是C++)中,结构体位于它们自己的命名空间中.所以,如果你定义了一个

struct sockaddr { ... }

你可能不会用它

sockaddr s;
sockaddr *ps;

为了使其合法,您可以使用typedef导入类型名称的非结构名称空间:

typedef struct sockaddr { ... } sockaddr;
sockaddr s, *p;

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有