
No.3ベストアンサー
- 回答日時:
>結果的に処理により文字コードになる1バイトの数値をcharにより扱えるわけでしょうか?
その通りですね。
データを文字として扱うかどうかは、プログラムを組む側の都合に委ねられるので、
char s1[] = "ABCDE";
と
char s1[] = { 0x41,0x42,0x43,0x44,0x45,0x00 };
は同じ内容になります。※16進数で0x41は文字コード'A'
http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html
なるほど、同じ数値でも、intなら値として、charならば1文字ならば結果的に1文字の文字コードになる1バイトの値を、文字列ならば結果的に文字列になる文字コードになる何バイトの値として取り扱うとわかりました。
No.2
- 回答日時:
>char*で文字列や文字の入るメモリの最初のアドレスを定義し、charは一文字の文字コードを扱うのでしょうか?
厳密には、1バイトで表わせる数値(符号付きなら-128~+127)が扱えます。
半角文字は1バイトなので、その認識で大丈夫です。
実際にプログラムを動かして体感するとより理解が深まるでしょう。
ありがとうございます。
では、文字はcharにより、文字コードの数値ではなく、1バイトで表す数値で扱えるわけですね。
って事は文字コードそのものを扱う事はできないため、結果的に処理により文字コードになる1バイトの数値をcharにより扱えるわけでしょうか?
No.1
- 回答日時:
constの有り無しは、上書き出来るか否かに関わってきます。
constを付けることによって、上書き出来なくなります(中身の変更不可)。
(例1)
const char s1[] = "ABCDE";
s1[0] = 'a'; // 上書き出来ないので、コンパイルエラーになります。
(例2)
char s1[] = "ABCDE";
s1[0] = 'a'; // 1文字目を'A'→'a'に書き換え(正常に動作します)
(例3)
char str[] = "ABCDE";
const char* s1;
s1 = str;
*s1 = 'a'; // 上書き出来ないので、コンパイルエラーになります。
パソコンで実行する場合はプログラムとデータは全てRAMに展開されるのですが、
組み込み機器(例えばプリンタのファームウェア等)ではプログラムとデータはROMに焼かれています。
constで宣言した文字列はROM上のアドレスを指すことになるので、当然書き込みできません(読み出しのみ)。
const無しならRAMにコピーした文字列のアドレスを指しますので、書き換え可能です。
<参考>
https://www.hiramine.com/programming/c_cpp/const …
ありがとうございます。
ちなみに、char*で文字列や文字の入るメモリの最初のアドレスを定義し、charは一文字の文字コードを扱うのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CStringからchar*への型変換に...
-
char*を初期化したいのですが
-
C言語のintとcharの違いってな...
-
C言語にて構造体のメンバがNULL...
-
C++17で、unsigned char * 配列...
-
動的メモリの初期化方法について。
-
Run-Timeエラーの原因に関して...
-
fstream型オブジェクトを関数の...
-
new charとnew char[N]の違いは?
-
2次元配列の文字"列"の初期化方法
-
1Byte→Hex文字列変換がうまく行...
-
警告
-
C言語で文字列をかえす正しい書...
-
[C] 構造体メンバーのカンマ区...
-
文字列strの中から文字cを探す...
-
char型にint型の数値を代入する。
-
文字列を表すための配列とポインタ
-
ASCIIコードへの変換方法
-
ポインタで詰まりました;
-
苦しんでCを読んでchar型は文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringからchar*への型変換に...
-
char*を初期化したいのですが
-
C言語のintとcharの違いってな...
-
char型にint型の数値を代入する。
-
C言語にて構造体のメンバがNULL...
-
fgetc( )の戻り値はなぜ整数??
-
char 文字列型 の表現範囲が-12...
-
fstream型オブジェクトを関数の...
-
C++17で、unsigned char * 配列...
-
DWORDとcharの変換
-
文字列内の数字削除
-
new charとnew char[N]の違いは?
-
文字型配列に格納した空白の切捨て
-
C++Builder 2009 テキスト...
-
csvファイルをfscanfで読み込む...
-
文字列の途中から途中までを抽出
-
[C] 構造体メンバーのカンマ区...
-
エクセルのMID関数は、C言語では?
-
小数点入りの文字列をfloat型に...
-
wsprintf( ポインタ , "%d" , "...
おすすめ情報