0

私はこの関数宣言を持っています:

void gaussian_blur
(
    const unsigned char* const inputChannel,
    unsigned char* const outputChannel,
    const float* const filter
) 
{..}

私はCを初めて使用します。基本的なチュートリアルを実行し、ポインターと定数の概念を理解しましたが、この引数リストの意味を理解できません。

誰かがこれが何を意味するのか説明できますか?

4

3 に答える 3

4
const unsigned char* const inputChannel;

入力チャネルは、定数unsignedcharへの定数ポインターです。

unsigned char* const outputChannel;

OutputChannelは、unsignedcharへの定数ポインターです。

const float* const filter

filterは、定数floatへの定数ポインターです。

定数ポインタ-ポインタ変数が保持するアドレスは変更できません。

定数データ-データは読み取り専用/定数として扱われ、変更できません。

于 2013-03-07T18:06:34.150 に答える
3

右から左に読む:

const unsigned char* const inputChannel

inputChannel定数への定数ポインタunsigned charです。

于 2013-03-07T18:00:04.503 に答える
2

タグの情報リンクを見る場合は、下にスクロールして

時間を節約できる重要な注意事項

また、Cで理解できないことの意味を解読するのに非常に役立つスパイラルルールへのリンクが表示されます。

基本的には、変数の名前を読み取り、右に移動してから、一度に1つの要素を左に移動します。この場合、変数の右側には何もないため、左に移動するだけです。

 inputChannel,                           // inputChannel is a
 const inputChannel,                     // constant
 * const inputChannel,                   // pointer
 char* const inputChannel,               // to a char
 unsigned char* const inputChannel,      // which is unsigned
 const unsigned char* const inputChannel // which is constant

したがって、これは定数ポインターであり、それが指すもの(unsigned char)も定数です。とても簡単。

それが多すぎる場合は、いつでもごまかすことができます。理解できないことをここに投げてください:http: //cdecl.org/そしてそれは英語でそれを吐き出します(通常)

于 2013-03-07T18:14:33.590 に答える