10

私はあるコードを読んでいます

#include ...

static char const *program_name;

...
int main(int argc, char** argv){
program_name = argv[0];

...
}

constメイン関数が変数に値を割り当てる方法を知りたいです。どんな助けでも大歓迎です!

4

2 に答える 2

15

宣言:

static char const *program_name;

say はprogram_name、定数文字への (変数) ポインターです。ポインターは変更できます (したがって で割り当てることができますmain()) が、このポインターを介してポイントされた文字列を変更することはできません。

以下と比較対照します。

static char * const unalterable_pointer = "Hedwig";

これは変数データへの定数ポインターです。ポインターを変更することはできませんが、ポインターが指すように初期化された文字列がリテラルでない場合は、文字列を変更できます。

static char owls[] = "Pigwidgeon";
static char * const owl_name = owls;

strcpy(owl_name, "Hedwig");

/* owl_name = "Hermes"; */ /* Not allowed */

また、以下と比較対照します。

static char const * const fixed_pointer_to_fixed_data = "Hermes";

これは定数データへの定数ポインタです。

于 2013-01-11T05:14:10.127 に答える
8

program_nameconst ポインターではなく、const char へのポインターです。代入ステートメントは、値を指す先ではなくポインターに代入します。

于 2013-01-11T05:13:45.103 に答える