私はあるコードを読んでいます
#include ...
static char const *program_name;
...
int main(int argc, char** argv){
program_name = argv[0];
...
}
const
メイン関数が変数に値を割り当てる方法を知りたいです。どんな助けでも大歓迎です!
宣言:
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";
これは定数データへの定数ポインタです。
program_name
const ポインターではなく、const char へのポインターです。代入ステートメントは、値を指す先ではなくポインターに代入します。