代码之家  ›  专栏  ›  技术社区  ›  Jon Purdy

C++引用/指针语法的替代

  •  3
  • Jon Purdy  · 技术社区  · 14 年前

    char*& 是“指向字符指针的引用”或“字符指针引用”;有没有明确引用的语言使用从左到右的阅读顺序,比如 &*char / ref ptr char ? 我正在做一个小的语言项目,易读性是我最关心的问题之一。

    在我看来,这是一个问题,它是一个人容易,但很难为搜索引擎提供答案。提前谢谢!

    4 回复  |  直到 14 年前
        1
  •  5
  •   anon anon    14 年前

    Stroustrup说声明语法是“失败的实验”。不幸的是,C++必须与C兼容。最初的想法是声明看起来像一个用法,例如:

    char * p;  // declare
    * p;       // use (dereference)
    

    但对于更复杂的声明,这一点很快就会分崩离析。许多人(至少许多Pascal程序员)更喜欢这种语法:

    variable : type;
    

    array of char
    

    它的可读性和你要读的一样,从左到右。

        3
  •  1
  •   spoulson    14 年前

    相反,在解引用时,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决定了要读取的类型(标量vs.数组vs.哈希)

    say "Array size: " . scalar(@a);
    say "Array size: " . scalar($@b);  # dereference with $, access as @ (array)
    
        4
  •  0
  •   Seva Alekseyev    14 年前

    Pascal强制类型的别名。您不能声明:

    myvar:ref到struct{..指向char.}的指针数组