アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のBの方法で作成したtempはそのサイズwkは20となりますが、
Aの方法で作成したtempはそのサイズwkは4とかになり、文字列の長さに
なりません。

Q1)Aの方法で作成したtempのサイズwkを20に設定する方法はありますか?

char* temp="QQQQQQQQQQQQQQQQQQQQ"; <---A

//char temp[20]; <----B
// for(int i=0; i<20; i++) temp[i]='Q';
int wk=sizeof(temp);
以上宜しくお願いします

A 回答 (2件)

sizeof ポインタ


sizeof 配列
で検索してください。

これは、配列とポインタとでの挙動の違いです。
C 言語の基本です。
    • good
    • 0

Aの方のtempはcharではなくchar型のポインターですよね。


ですのでtempに入っている値は20文字の文字列ではなくその文字列のアドレスです。この時のtemp自身はintと同じ4バイトの変数です。
そこを誤解されています。

参考まで。
    • good
    • 0
この回答へのお礼

有難う御座いました

お礼日時:2017/06/10 13:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!