[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 11/13 08:16 / Filesize : 8 KB / Number-of Response : 38
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 43



1 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:00:13 ]
C言語の入門者向け解説スレです。

教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
 C/C++の宿題を片付けます 122代目
 pc11.2ch.net/test/read.cgi/tech/1232001038/

・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
・開発環境や動作環境も晒すと答えが早いかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 42
pc11.2ch.net/test/read.cgi/tech/1231180205/
過去スレ
  makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000


14 名前:デフォルトの名無しさん [2009/01/25(日) 00:35:07 ]
質問です。
たとえば、char *p="abc"というポインタ変数があって、
それには何かきまったアドレスがあるわけです。
そのアドレスを別のアドレスに変えるにはどうすればいいんですか。

15 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 00:37:15 ]
>>14
p = でなんでも代入すりゃいいだろ

16 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 00:49:19 ]
ポインタ変数のアドレスを変えたいなら別のポインタ変数を作って代入すればいいと思うよ。

17 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 00:54:26 ]
>>ポインタ変数があって、それには何かきまったアドレスがある
「それ」は、ポインタ変数を指示しているので、pのアドレスのこと、つまり、値としては、&pである。
これを変えるのは、難しい。アセンブリレベルでコードを書き換えてからコンパイルするか。バイナリをハックするか。

18 名前:デフォルトの名無しさん [2009/01/25(日) 00:59:42 ]
>>17 (・∀・)ニヤニヤ

19 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 01:00:57 ]
>>17
アセンブリの段階で変数とか消滅してるけどな

20 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 01:01:18 ]
変数じゃなくて変数名p

21 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 01:06:56 ]
何この糞な流れ

22 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 01:10:06 ]
もっとがんばろうぜ



23 名前:デフォルトの名無しさん [2009/01/25(日) 01:30:26 ]
while(c<11){
a=strcmp(pnt[b],pnt[c+1]);
if(a>0){
b=c+1;
}
c++;
}
エラーは起きないのにこのwhile文にだけ入らないみたい。
なんで??
ちなみにC=0です。
これ以外のどこかがおかしいから入らないのかな?

24 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 01:32:10 ]
とりあえずc==0なのか出力して確かめろよ

25 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 01:39:38 ]
>>23
whileに挿れる前の、初めてのcが11以下なのか、どうなのか?チェキして

26 名前:デフォルトの名無しさん [2009/01/25(日) 01:39:57 ]
>>24
あー。
何かいけたかも。


27 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 02:50:04 ]
小数点の計算なんですけれど
int a = 130;
int b = 100;
double c;

c = a / b;

こうするとエラーが起こります。
よろしくお願いします。

28 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 03:16:05 ]
エラーメッセージ書いて

29 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 03:16:15 ]
>>27
ちゃんとcは1になると思うが、どういうエラーが起こるんだ

30 名前:27 mailto:sage [2009/01/25(日) 03:48:53 ]
>>28
>>29
申し訳ないです。
bの値が0であったためエラーが起きたみたいです。

31 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 04:08:27 ]
>>27でどうしてbの値が0になるのか不思議だ

32 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 05:14:40 ]
型の違いに対する警告じゃね?



33 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 05:16:05 ]
>>27
cに代入した値は、何か別の場所で使ってる?

34 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 07:55:48 ]
ヘッダーファイルをインクルードせずにコンパイルおよび実行できてしまったのですが
これは何でですか?

具体的には
int main(void)
{
printf("%f\n", sqrt(3));

return 0;
}
です。
stdio.h math.h をインクルードしないとエラーが出ると思ったのですが・・・

環境は cygwin gcc 3.4.4です。
コンパイルオプションなどは特に設定してません。

35 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 08:27:22 ]
どのエラーを期待してるのかわからないが、-Wall をつければ
いくつか警告がでるはず。

一般的に必須なのは math.h
sqrt() の返り値が double であると宣言する必要がある。

ただし、gccはprintfのフォーマット演算子の解析しているので、
"%f"から double を類推できて、問題なく動いているのだと思う。

36 名前:34 mailto:sage [2009/01/25(日) 09:14:06 ]
>>35
数年の記憶ではエラーが出たような気がして。

-Wall試してみました。警告出てきました。
ですが、エラーにならないならインクルードする必要がないってことになってしまいませんか?
それとも、このエラーにならないってのはgccの仕様であって、
C89やC99では認められてなかったりするのでしょうか?


37 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:15:15 ]
数年前の記憶では
です。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<8KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef