以下の内容はhttps://seinzumtode.hatenadiary.jp/entry/20140524/1400933325より取得しました。


文字列を返り値にする

文字列リテラルを返却する場合は静的なので問題ないんだけど、
(Char型への)ポインタであるローカル変数を返却しようとするとエラーが出る。
関数が呼ばれた後に、ローカル変数が破棄されていることが原因らしい。
こういうときにmallocを使う。
http://www-ui.is.s.u-tokyo.ac.jp/~tera1984/dat/struct.txt

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *msg(void){
  return "Hello\n";
}

char *msg2(void){
  char *hoge = (char *)malloc((size_t) 10); //メモリを確保
  strcpy(hoge,"Hello\n");
  return hoge;//呼び出し後に破棄されるのでアドレスを渡せない
}

int main(void){
  char *str = msg();  
  printf(str);
  char *str2 = msg2();  
  printf(str2);
  free(str2);//メモリを解法

  return 0;
}



以上の内容はhttps://seinzumtode.hatenadiary.jp/entry/20140524/1400933325より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14