暫く遠ざかってましたが、全く忘れたわけではありません。ここ数日考えてました。
上の図で、MakePlus1Numberではローカル変数ですよねint w;。return w;してます。その上のlanguage_strではstaticな変数にして、ポインタを返しています。この場合はstaticでないと、returnした途端、参照先が消えてしまう。エラーになりますが。(*^^*)
CとかC++では文字列がプリミティブなint等と違って、charの延長?となっている。文字列を返すことが出来ない、と思います。C#なら出来ると思います。
Language_strで作った、ローカルなstrを返したように見えますが、そもそもがobjで作ってあるので、良いのかも?分かったようで、わからない話です。(´°̥̥̥̥̥̥̥̥ω°̥̥̥̥̥̥̥̥`)