C指针是一种语言悖论

最近,我的一个朋友(并非在所有程序员圈子中都认识我)要求我帮助他进行C ++实验。 代码是这样的:

void do_something(MyObj *input[], int count)
{
    MyObj **copy = new MyObj*[count];
    for (int i = 0; i < count; ++i)
        *copy[i] = *input[i];
    ...
}

, , — , «» , , , . , , — .

, , :



?
, C/C++, .

. , « », . , :

  • = , .
  • = , = , , .
  • = , = , , = , , , .

, — — C/C++ :

  • MyClass* = MyClass.
  • MyClass** = MyClass* = MyClass.
  • MyClass*** = MyClass** = MyClass* = MyClass.

, .

  • = , = .
  • = = , = .

, (= , , ) . , — .

, : «» «» , «», , .

C/C++: , « T», «T*», ( ), , , , T (, , T&, lvalue ). ( ) ,

  • *(T*) === T,
  • *(T**) === T*,
  • **(T**) === T,
  • *(T***) === T**,
  • .

? . , - C/C++ . , — … .

Source: https://habr.com/ru/post/zh-CN417257/


All Articles