-5

const intを期待している関数にintを渡すにはどうすればよいですか。

または、cont int 値を変更する方法はありますか?

編集:これについては以前に言及する必要がありましたが、picマイクロコントローラーのプログラムに使用されるccs cコンパイラーを使用しています。fprintf 関数は、最初の引数として定数ストリームを取ります。定数 int のみを受け入れ、それ以外の場合は「ストリームは有効な範囲内の定数でなければなりません」というコンパイル エラーをスローします。

編集 2: ストリームは定数バイトです。

4

2 に答える 2

9

関数パラメーター リストのトップ レベルconstは完全に無視されるため、

void foo(const int n);

とまったく同じです

void foo(int n);

したがって、 を渡すだけですint

唯一の違いは、最初の例では関数定義であり、2 番目の例では変更可能です。したがって、これは実装の詳細と見なすことができ、関数宣言では避ける必要があります。たとえば、ここでは関数内を変更したくありません。nconstconstn

void foo(int n); // function declaration. No const, it wouldn't matter and might give the wrong impression

void foo(const int n) 
{
  // implementation chooses not to modify n, the caller shouldn't care.
}
于 2013-08-18T09:44:36.610 に答える
4

これはだます必要はありません。type の引数を期待する関数は、 type のconst int引数を喜んで受け入れますint

次のコードは正常に動作します。

void MyFunction(const int value);

int foo = 5;
MyFunction(foo);

引数はvalueで渡されるため、実際にconstはあまり意味がありません。唯一の効果は、変数の関数のローカル コピーが変更されないようにすることです。関数に渡す変数は、引数が取られるかどうかに関係なく、変更されることconstはありません。

于 2013-08-18T09:44:45.473 に答える