小编rem*_*ine的帖子

箭头操作员与点操作员

在我看来,C的箭头操作符( - >)是不必要的.点运算符(.)应该足够了.请使用以下代码:

typedef struct {
    int member;
} my_type;

my_type   foo;
my_type * bar;
int       val;

val = foo.member;
val = bar->member;
Run Code Online (Sandbox Code Playgroud)

我们看到箭头操作符必须用于取消引用栏.但是,我更愿意写

val = bar.member;
Run Code Online (Sandbox Code Playgroud)

关于我是否试图从结构或指针结构中拉出"成员",没有任何歧义.但是使用错误的运算符很容易,尤其是在重构代码时.(例如,也许我正在foo上做一些复杂的操作,所以我将代码移动到一个新函数并将指针传递给foo).我认为我不需要关心foo是否是指针; 编译器可以担心细节.

所以问题是:从C语言中消除 - >不是更简单吗?

c pointers structure

35
推荐指数
2
解决办法
5万
查看次数

标签 统计

c ×1

pointers ×1

structure ×1