HOME»基本情報技術者試験掲示板»平成24秋 午後問9について
投稿する
平成24秋 午後問9について [2151]
ITビギナーさん(No.1)
教えて下さい。
平成24秋 午後問9 設問2の空欄eなのですが、答えが選択肢 イ ではなく エ なのはなぜでしょうか。lots[j]の6桁目の番号を取得するためなのは理解できるのですが。最初にchar *lots[]で宣言してるので、空欄 e 選択肢の エ は*(*lots[j]+m)という意味合いですか。
宜しくお願いします。
平成24秋 午後問9 設問2の空欄eなのですが、答えが選択肢 イ ではなく エ なのはなぜでしょうか。lots[j]の6桁目の番号を取得するためなのは理解できるのですが。最初にchar *lots[]で宣言してるので、空欄 e 選択肢の エ は*(*lots[j]+m)という意味合いですか。
宜しくお願いします。
2020.02.05 06:40
メタルさん(No.2)
★FE ブロンズマイスター
ポインタによる参照わたしがおこなわれています。
答え イだと
*lots[j] + m
ポインタ配列lots[j]の中のアドレスが示す数字列+変数mの内容、になります。
答え エだと
*(lots[j] + m)
ポインタ配列lots[j]の中のアドレス+m個分のcharのサイズ = m番目の数字
つまり答えイだと、ええとどうなるんだこれ?
答え イだと
*lots[j] + m
ポインタ配列lots[j]の中のアドレスが示す数字列+変数mの内容、になります。
答え エだと
*(lots[j] + m)
ポインタ配列lots[j]の中のアドレス+m個分のcharのサイズ = m番目の数字
つまり答えイだと、ええとどうなるんだこれ?
2020.02.05 20:10
メタルさん(No.3)
★FE ブロンズマイスター
答えイだと、
ポインタ配列lots[j]の中のアドレスが示す数字列+変数mの内容=意味のない値
となり、
*(*lots[j] + m)だとどこかのアドレスの内容になる。
どちらにしてもポインタから普通の配列pnum
nnumに入れるには数字でなくてはいけません。
むずかしければ、実際にPC使って文字列表を書いてコンパイルして、いろんな方法で参照してみましょう。
こんな感じで
Char *str[3] = “577803”,”356778”,”577889”;
ポインタ配列lots[j]の中のアドレスが示す数字列+変数mの内容=意味のない値
となり、
*(*lots[j] + m)だとどこかのアドレスの内容になる。
どちらにしてもポインタから普通の配列pnum
nnumに入れるには数字でなくてはいけません。
むずかしければ、実際にPC使って文字列表を書いてコンパイルして、いろんな方法で参照してみましょう。
こんな感じで
Char *str[3] = “577803”,”356778”,”577889”;
2020.02.05 20:31
ITビギナーさん(No.4)
メタルさん詳しい解説ありがとうございます。答え イ だと自分のくじ番号に当たりの数字があっても外れと見なされてしまいますかね。
2020.02.05 20:33
メタルさん(No.5)
★FE ブロンズマイスター
エラー起こすでしょうね。
2020.02.05 22:20
ITビギナーさん(No.6)
この投稿は投稿者により削除されました。(2020.02.08 08:25)
2020.02.08 08:25
メタルさん(No.7)
★FE ブロンズマイスター
これ実行したら8ってでました。
おっしゃるとおり、mの内容分加算されて、あたりのくじがはずれとみなされます。
VC++とか大層なコンパイラインストールしなくても、窓の杜とかに"学習用C言語開発環境"という
お手軽なコンパイラがあるので、スレ主様も試してみるといいですよ。
int main(void)
{
char *str[3] = "123123","654321","777777";
char st2[3];
st2[1] = *str[1] + 2;
printf("%s",&st2[1]);
return 0;
}
おっしゃるとおり、mの内容分加算されて、あたりのくじがはずれとみなされます。
VC++とか大層なコンパイラインストールしなくても、窓の杜とかに"学習用C言語開発環境"という
お手軽なコンパイラがあるので、スレ主様も試してみるといいですよ。
#include <stdio.h>
#include <string.h>
int main(void)
{
char *str[3] = "123123","654321","777777";
char st2[3];
st2[1] = *str[1] + 2;
printf("%s",&st2[1]);
return 0;
}
2020.02.09 04:07
ITビギナーさん(No.8)
メタルさんありがとうございます。
自分は"C4droid"というアプリを使用しているので試してみます。
コードまで書いていただいて、御手数おかけました。
自分は"C4droid"というアプリを使用しているので試してみます。
コードまで書いていただいて、御手数おかけました。
2020.02.10 19:49
メタルさん(No.9)
★FE ブロンズマイスター
どういたしまして。
2020.02.10 21:33
メタルさん(No.10)
★FE ブロンズマイスター
あと、訂正です。
誤
printf("%s",&st2[1]);
正
printf("%c",st2[1]);
誤
printf("%s",&st2[1]);
正
printf("%c",st2[1]);
2020.02.10 21:37