Этот код будет работать. Вы возвращаете значение указателя в StrArray[4]
, которое указывает на постоянную строку "BB"
. Время жизни константных строк равно времени жизни всей вашей программы.
Важная вещь - это время жизни того, что указатель указывает на , а не на то место, где хранится указатель. Например, следующий подобный код будет не работать:
char* foo(int myNum) {
char bb[3] = "BB";
char* StrArray[5] = {"TEST","ABC","XYZ","AA",bb};
return StrArray[4];
}
Это связано с тем, что массив bb
является временным значением в стеке функции foo()
и исчезает при возврате.