0

プログラムに次のコード行を書きました。

const int *dims = {4};

しかし、それは私に次のエラーを報告しました:

「型 int の値を使用して、型 const int のエンティティを初期化することはできません」

何が起こったのか教えて、それを修正する方法を教えてもらえますか?(配列dimsがまだであるという条件でconst)

4

2 に答える 2

3

このコードconst int *dims = {4};は、ポインター dims に値 4 を割り当てることを意味します。しかし、ポインターがメモリ位置 4 を指すようにする必要があるのはなぜでしょうか。それがあなたが望むことである可能性は非常に低いので、それを行うことは許可されていません。

値 4 の const int へのポインターを取得するためのいくつかのオプションを次に示します。

const int *dims = new int(4);  // beware someone needs to delete dims

スタックのように、自動有効期間の場合:

const int autoDims(4);     // Will be deleted when autoDims goes out of scope
const int *dims(&autoDims);

また:

const int dims[] = {4};    // Will be deleted when dims goes out of scope

値 4 のポインターが本当に必要な場合は、ポインター型に明示的にキャストする必要があります。

const int *dims = (int *)4;
于 2013-08-04T23:08:55.930 に答える
2

ポインターを整数で初期化しようとしているため、コンパイラーは不平を言っています。

あなたが参照している関数は、おそらく配列が渡されることを期待しています。次のように、定数配列で呼び出すことができます。

const int dim[4] = {1,2,3,4};

foo(dim);
于 2013-08-04T22:44:47.900 に答える