あと、関数内で
文字列定数定義する場合
const char* const str = "test";
const char[] str = "test";

より
static const char* const str = "test";
static const char[] str = "test";

の方が効率いいというのは本当ですか?