C和C ++以外的哪些语言具有显式引用和指针类型限定符?人们似乎很容易被类型的从右到左阅读顺序混淆,其中char*&
是“对指向字符的指针的引用”,或“字符指针引用”;使用显式引用的任何语言都可以使用从左到右的阅读顺序,例如&*char
/ ref ptr char
?我正在开展一个小小的语言项目,易读性是我关注的主要问题之一。
在我看来,这是一个人很容易对其中一个但搜索引擎难以提供答案的问题之一。提前谢谢!
答案 0 :(得分:5)
Stroustrup正在记录中说声明语法是“失败的实验”。不幸的是,C ++必须与它兼容才能实现C兼容性。最初的想法是声明看起来像一个用途,例如:
char * p; // declare
* p; // use (dereference)
但是对于更复杂的声明,这很快就会崩溃。很多人(至少很多Pascal程序员)更喜欢这种语法:
variable : type;
其中type类似于:
array of char
这与您将要获得的一样可读,并且从左到右。
答案 1 :(得分:2)
我认为这已经不存在了,但它可能对您有用:http://en.wikipedia.org/wiki/Significantly_Prettier_and_Easier_C%2B%2B_Syntax
答案 2 :(得分:1)
相反,在解除引用时,从左到右读取Perl 5的方法:
$i = 10; # Scalar
say $i;
$j = \$i; # Scalar reference
say $$j;
@a = (1, 2, 3); # Array
$b = \@a; # Array reference
say $a[0];
say $$b[0]; # prints same thing
但是,与C / C ++不同,用于变量名的sigil决定了将要读取的类型(标量与数组与散列)
say "Array size: " . scalar(@a);
say "Array size: " . scalar($@b); # dereference with $, access as @ (array)
答案 3 :(得分:0)
Pascal强制执行类型别名。你不能声明:
myvar:引用struct {..指向char。}
的数组您必须在TYPE块中单独声明链中的每个步骤。
提高了可读性(如果你不介意上下滚动),也可能提供更容易的解析。