2
4

2 に答える 2

1

許可されている場合、宣言されたものを誤って変更する可能性があるためですconst

ルールで許可されている場合の具体的な乱用の例を次に示します。

char const* s = "a literal, very const";

bar(const char** pp )
{
    *pp = s;
}

foo(char** arr)
{
  bar(arr);
  char* unconsted_s = *arr;
  unconsted_s[0] = 'X';
}

これはFAQでもあります。質問する前によくある質問 (または単にグーグル) を確認することをお勧めします。

于 2013-03-29T13:19:00.023 に答える
0

許可されている場合、同様のシナリオにつながる可能性があります。

void foo(int** arr)
{
    /*Can freely modify value at location pointed by a*/
   **arr = 6;
}


int main()
{
 /*Pointer to constant*/
 int i = 5;

 const int* a =&a;

 /*Not a pointer to constant*/
 int** aa= &a;

 foo(aa);

return 0;
}
于 2013-03-29T13:26:40.267 に答える