1. ホーム
  2. c++

[解決済み] ポインタの使い方が予測不可能なのはなぜか?

2022-11-12 12:35:09

質問

私は現在ポインタを勉強しており、教授が例としてこのコードを提供してくれました。

//We cannot predict the behavior of this program!

#include <iostream>
using namespace std;

int main()
{
    char * s = "My String";
    char s2[] = {'a', 'b', 'c', '\0'};

    cout << s2 << endl;

    return 0;
}

コメントで「プログラムの動作は予測できない」と書いています。しかし、具体的に何が予測できないのでしょうか?私は何も問題ないと思っています。

どのように解決するのですか?

プログラムの挙動が不正であるため、存在しない。

char* s = "My String";

これは違法です。2011年以前は、12年間非推奨でした。

正しい行は

const char* s = "My String";

それ以外のプログラムは問題ありません。教授はもっとウイスキーを飲むべき!