The strings that you enter: "red", "organge" etc are "literal", because they are defined inside the program code itself (they are not read directly from disk, user input /stdin etc.).
This means that if at any point you try to write to your colors
you will be directly accessing your original input and thus editing it. This would cause some undesired run-time errors.
Declaring it as a const will make sure that you will never try to write to this pointer and such a run-time error can be avoided.
const char *colors[4] = {"red", "orange", "yellow", "blue"};
If you ever feel like editing these values at runtime, then you should copy the strings first.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…