小编hdh*_*ero的帖子

默认情况下,C可以通过指针传递

C是一种古老的语言.例如,你知道使用它没有问题吗?运算符而不是带有指针的 - >运算符,并且由于遗留原因而维护了 - >?看到这里.

研究几个C代码,可以注意到大多数时间结构是使用指针而不是值传递的.数组也通过指针传递.

是否可以更改语法以默认将结构作为指针传递?例如,请考虑以下示例:

struct Point {
    float x;
    float y;
};

struct Line {
    Point! p0; // ! means that we want a value, not a pointer
    Point! p1;
};

struct Line2 {
    Point p0; // would be the same as Point*
    Point p1;

}

void foobar(Line line) { // would mean Line* line
    ...
}

void foobaz(Line! line) { // would mean Line line
    ...
}
Run Code Online (Sandbox Code Playgroud)

我们不考虑可读性,例如,有些人认为 - >明确指出这是一个指针.这不是重点.

这是一个问题:使用这种语法可能会出现什么问题或角落案例?例如:'使用这样的语法,就不可能做到这一点或那个'

Java实际上与此提议类似:一切都是引擎盖下的指针.区别在于Java具有垃圾收集器,并且对象总是在堆中分配(对象本身,而不是"指针"),而在C中,结构可以在堆栈中分配(尽管我看到在堆中分配的大部分时间) .

如果有人想知道我为什么这么问,那是因为我正在为低级开发创建一种编程语言,我想优化常见情况的语法.虽然我喜欢C语言本身,但我不得不使用头文件(例如,在两个地方更新函数签名),缺乏对函数重载的支持(我不喜欢编写int_list_add,float_list_add)和类似. …

c compiler-construction pointers

-2
推荐指数
1
解决办法
116
查看次数

标签 统计

c ×1

compiler-construction ×1

pointers ×1