回答受付が終了しました

char *str = "0,1,2,3,4,5,...10"と書いたとします。

回答(7件)

1

『strに入るのはポインタ変数』 いいえ。変数は代入できません。 『strは1バイトです。』 いいえ。今時のシステムであれば、strは、4もしくは8バイトになります。

1人がナイス!しています

0

またロクな確認もせず大騒ぎしているのですか? strのデータ長は1バイトではありません。あなたが抱える多くの疑問は無知と確認不足が原因で発生しています。 P.S. {}は「数値として扱うため」の記号じゃないよ。配列の各要素の初期値を列挙するための記号だよ。 char *が8バイトなんじゃないよ、「ポインタはすべからく8バイト」なんだよ。

0

> 残念ながらついています。 " "は文字として { }は数値として扱うためにです。 ちがいます。 char *str = "0,1,2,3,4,5,...10"; この行は、 char *str = {'0', ',', '1', ',', '2', ',', '3', ',', '4', ',', '5', ',', '.', '.', '.', '1', '0', '\0'}; という行と同じ。いくらでも文字列(未だ区別がつかないようですが、文字列と文字は別物です)を「扱え」ます。 そもそも、コンピュータは(C言語や、プログラミング言語以前に、コンピュータは)数の計算しかできない機械です。文字、文字列、ましてや言葉や言語なんて、これっぽっちも理解できません。その上、0と1という二つの数しか理解できないのですから、なおさらですね。 ただ計算はものすごく速い。スパコン、PCでなくても、スマホでさえ、1秒間に兆単位の計算ができます。 コンピュータに文字列の処理をさせることができるのは、ひとえに人間の工夫のなせる技です。では、どういう工夫を、コンピュータを開発した人、C言語を開発した人がしたのか?それを知ることが、C言語を使った文字列の処理をマスターするいちばんの近道になります。さあ、Googleで調べましょう!

1

char *str = "0,1,2,3,4,5,...10"と書いたとします。 まだ、" と ’ の区別、" " と { } の区別が付いてないようですね。 ポインタのサイズは32bit環境なら4バイトです ポインタのサイズは64bit環境なら8バイトです

1人がナイス!しています

2

if (sizeof(char*) == 8) printf("ok"); if (sizeof(char) == 1) printf("ok2");

2人がナイス!しています