Serviceを読んで理解し、同意したものとみなします。どのような違いがありますか文字列がどのようなメモリに配置されるかが異なってきます。"AAA";は、コンパイラが静的記憶期間の(プログラムの実行開始から終了までずっと存在する)メモリ領域に文字列を配置し、それへのポインタをaに代入するというものです。配列の初期化においてのみ""の文字列リテラルはこのようにほかと違う取り扱いになります。そのため、以下のように、変数の寿命を越えると差が出ます。char*の変数の場合、returnしても文字列本体は有効です。