我讀一段代碼,其中存在初始化靜態字符常量* somevar
#include ...
static char const *program_name;
...
int main(int argc, char** argv){
program_name = argv[0];
...
}
我想知道如何能的主要功能將值分配給一個const
變量。任何幫助,將不勝感激!
我讀一段代碼,其中存在初始化靜態字符常量* somevar
#include ...
static char const *program_name;
...
int main(int argc, char** argv){
program_name = argv[0];
...
}
我想知道如何能的主要功能將值分配給一個const
變量。任何幫助,將不勝感激!
聲明:
static char const *program_name;
說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'如果在原來的方式聲明,即'靜態字符常量*程序名;'。這是你的意思嗎? – AoZ
正確。你不能寫'*程序名=「A」;''因爲點program_name'恆定的數據;你不能通過這個指針修改數據(雖然其他指針相同的數據或許可以修改它 - 在這種情況下,你可以寫'* argv的[0] =「A」;'如果你想,雖然我沒有想到要這樣做的好理由)。 –