[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 18:47 / Filesize : 239 KB / Number-of Response : 921
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

C統合・質問スレッド



1 名前:デフォルトの名無しさん mailto:sage [03/11/09 15:37]
いろんなスレが乱立していますが、統合的なスレッドがないので立てました。
質問もOK

関連スレ
C#って死滅する理由がないよね! Part4
pc2.2ch.net/test/read.cgi/tech/1042464104/
C#最強伝説
pc2.2ch.net/test/read.cgi/tech/1061208152/
C#とJava、どっちをおぼえればいいの?
pc2.2ch.net/test/read.cgi/tech/1006715468/
C#Builder Professional 質問箱
pc2.2ch.net/test/read.cgi/tech/1062433418/

関連リンク
dir.yahoo.co.jp/Computers_and_Internet/Software/Programming_Tools/Programming_Languages/C_Sharp/


620 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:02:45 ]
scanf("%d",&r);
scanf("%d",&h);
A=ff (r,h);
ff=f2;
V=ff (r,h);
printf ("表面積=%f 体積=%f",A,V);
return 0;
}(後は省略)

この問題でhとrをよみこみたいんですけど
こういうふうに書くとどんな数字を読み込んでも答えが0になって
しまうんですけどどこが間違ってますかね・
ちなみにscanfのかわりにh=1とかって定義すればしっかり値はでます。

621 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:03:58 ]
すいません途中しかコピペしてませんでした。こんな感じです
#include <stdio.h>
#define PAI 3.14159
double a,b,r,h,A,V;
double f1 (double r2,double h2);
double f2 (double r2,double h2);
main(void)
{

double (*ff)(double r2,double h2);


ff=f1;
scanf("%d",&r);
scanf("%d",&h);
A=ff (r,h);
ff=f2;
V=ff (r,h);
printf ("表面積=%f 体積=%f",A,V);
return 0;
}


622 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:14:35 ]
うはぁ、突込みどころが満載だ。
・doubleで計算したいならPAIは精度が足りない。
・そもそもPAIってなんだよw
・変数は極力グローバルに置かない方がいい。
・f1()とf2()が外部にあるなら、宣言はインクルードファイルで行なう方がいい。
・関数名は特別な理由でもない限り、中身が判る名前にしよう。
・main()の戻り値型は書くべき。
・実験的にやってみたいだけなら止めないが、関数ポインタを使う必然性がない。
・scanf()で型指定子を%dにするならint *を渡す必要がある。
・逆に、double *を渡したいなら型指定子は%lfだ。
・そもそもここはC♯の立て損なったネタスレだ。

623 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:19:13 ]
ほんと、ごめんなさい
でも解決しました><

624 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 00:23:44 ]
愚かな俺に教えて下さいまし、みなさま・・・

BYTE byData = 0x0f;
byData = byData << 4;
  (VC .net SP 適用なし)

これ実行すると byData が 0 になる。
3 ビットシフトだとちゃんと 0x78 になるのに・・・。

なぜだぁぁぁぁぁ!!

625 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 00:47:36 ]
>>624
自己解決

VC .net のシンボルウォッチのバグですた・・・
おぃおぃ、VC6 から劣化してどーすんのよ MSさん〜〜orz

626 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 05:49:05 ]
2つ整数を入力して商と剰余を求めるんですが・・・
20-6=14 14-6=8 8-6=2 3回引いたので商が3、剰余は2、というふうに求めろ、という問題です。
商は4、剰余4と出てしまいます。
#include <stdio.h>
void main(void)
{
int a,b,c,d,e,f;
printf("2個の正の整数を入力\n");
scanf("%d %d",&a,&b);
if (b>=a)
{
c=b;
b=a;
a=c;
}

d=a-b;
e=1;
while (d>=0)
{
d=d-b;
e=e+1;
}
printf("商%d 剰余%d",e,d);
}

627 名前:デフォルトの名無しさん [2006/07/19(水) 07:17:44 ]
d>=0だったら一回余分に計算しちまいますね・・・
自己解決しました。スレ汚しすんません。

628 名前:デフォルトの名無しさん [2006/08/15(火) 08:13:19 ]
巨大な乱数ファイルの後ろから1文字ずつ消していき、
ファイルサイズを2GByteにすることってできますか?
ファイルサイズを取得するまではいけたのですが、
1文字ずつ消す方法がわかりません。
消す方法はありませんか?



629 名前:デフォルトの名無しさん mailto:sage [2006/08/15(火) 11:09:04 ]
>>628
一文字ずつじゃなきゃいけないの?
ファイルサイズを単純に切り詰めるだけでいいならbsd/POSIX系関数で
truncate()/ftruncate()なんてのがあるけど。

630 名前:デフォルトの名無しさん [2006/08/15(火) 11:14:03 ]
#include <stdio.h>
void mystrcpy(char *strA, char *strB);

int main(void)
{
char str1[11], str2[11];

puts("Input str1[11]");
fgets(str1, 10, stdin);

mystrcpy(str1, str2);
printf("str1 = %s\n", str1);
printf("str2 = %s\n", str2);

return 0;
}
void mystrcpy(char *strA, char *strB)
{
int i;
for(i=0; *(strA+i); i++){
*(strB+i) = *(strA+i);
}
}
strcpy関数を自分なりにつくっていたところ、上のようなものができました。
ですがコンパイルして実行すると文字列のコピーはうまくいっているものの、
変な文字列(文字化けした文字)も出力されてしまいます。
どこらへんがおかしいのでしょうか?
(環境はWinXPHome、コンパイラがBorland C++ 5.1.1です)

また、先週からC言語を勉強し始めたのですが、
ポインタを引数にしたり戻り値として利用するところが自分には少々難しいと感じています。
何かわかりやすい本やウェブサイトがあったら紹介していただけないでしょうか。

631 名前:デフォルトの名無しさん mailto:sage [2006/08/15(火) 11:19:39 ]
>>630
文字列の終端の'\0'をコピーしていない。

632 名前:630 [2006/08/15(火) 11:31:59 ]
おお、まさにその通りです。
助かりました。

while(*(strB++) = *(strA++));

として解決しました。

633 名前:デフォルトの名無しさん [2006/08/15(火) 13:35:40 ]
>>629
一文字ずつじゃなくてもいいのですが、
ケツから2MByteくらいを消したいんです。
学校の課題なんで、切り詰めるだけでもばれないとは思いますが・・・。

#もし乱数データじゃなかったらばれるか。
#でもメモリ足りなくて開けないし・・・。

634 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 11:48:34 ]
ここってC#スレ?

635 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 08:22:41 ]
CとC#を一緒にすんなヴォケ

636 名前:タイトルのシャープが剥がされることも知らないのだろうか mailto:sage [2006/10/15(日) 10:39:11 ]
>>635
>1

637 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 10:46:47 ]
立てた奴の意図などどうでも良い。

638 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 14:28:51 ]
>>633
き ゃ ぴりん ☆ き っく ! でググれ



639 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 13:56:33 ]
質問です。
const int getHoge(){ return m_nData;}

というように、返り値にconstをつける意味はなにかあるのでしょうか?
ポインタなどを渡している場合ならわかるのですが、intやshortの場合の必要性がわかりません。


640 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 16:38:07 ]
>>639
製作者がconstなんだと叫びたいとき。
というのは冗談だが、Cではともかく、C++では違いが全然ないわけではない。
int foo();
const int bar();

template<typename T>
void hoge(T& x);

void f()
{
    hoge(foo()); //エラー:xはint&になるが、非constな参照型のインスタンスは右辺値で初期化できない。
    hoge(bar()); //xはconst int&になり、constな参照型のインスタンスは右辺値で初期化できるのでエラーにならない。
}
まあ普通はこんなことを気にする必要はない。

641 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 17:04:47 ]
>>640
ありがとうございます。
微妙な違いですね。

別のことを試してみたところ、const int getHogeは、
int n = getHoge()
とできてしまいました。全然constじゃないじゃん!
「エラー値とかだから計算する必要ないでしょ!だからconst!」って使い方をしようかと思ったのですが…。

素直にエラーはenumで型つけてやるほうがよさそうです。
ありがとうございました。


642 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 18:50:47 ]
>>641
そりゃぁ代入しちゃえばconst性は失われますがな。
でないと、int foo = 100;すらできなくなってしまう。

643 名前:デフォルトの名無しさん mailto:sage [2006/11/16(木) 10:06:58 ]
/libpathの指定でProgram Filesみたいな空白のある場合ってどうすればいいのでしょうか?

#pragma comment (linker, "/libpath:\"/Program Files/XXX/lib\" ")
としてみましたがうまく動いていないみたいです

includepathの指定も#pragma でできないのでしょうか?

644 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 21:14:26 ]
DrawStringでタブ"\t"を表現する方法を教えていただけないでしょうか
検索しようにも上記単語だと難しいので困ってます

645 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 11:40:13 ]
方法 : 描画されたテキストにタブ ストップを設定する
msdn2.microsoft.com/ja-jp/library/2c6tzes6(VS.80).aspx

646 名前:デフォルトの名無しさん mailto:sage [2006/12/08(金) 12:51:09 ]
>>645 ありがとうございます
そちらの参照先のように、決められた形(というのでしょうか)で表現したいのではなく
1 \t 222 \t 333
44444 \t 555
と表示する場合に3と5の表示開始位置が揃うようにしたいのですが
方法はないでしょうか

647 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 17:26:01 ]
学校の課題で使うのですが、ガウスの消去法で4行4列の式を解くプログラム乗ってるサイトありますか?
サイトから引っ張ってきていいと言われたので・・・
探したんですけどいっぱいあってどれが正しいのかわかんなくて

648 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 20:37:54 ]
結果が正しければどれでもいいのでは



649 名前:131 [2007/01/25(木) 21:12:22 ]
すみません、誰か分かる人はいませんか?
どうしてもC言語でJPEG画像を表示したいんです。
おねがいします。

650 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 21:22:39 ]
適当に解凍してただのビットマップを取り出せばいい。

651 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 21:47:22 ]
jpeglibとかあるだろ

652 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 22:01:39 ]
次に131がレスするのは2010年頃と予想

653 名前:デフォルトの名無しさん [2007/02/15(木) 23:14:58 ]
質問です!動的メモリ確保をつかったクラスみたいなものを作りたいんですが、
malloc() とfree()を使う方法では一つの関数内で完結させれば上手くいくのですが、
複数の関数でそれをやると上手く行きません。例えば↓では、関数b()で
エラーとなってしまいます。何故でしょうか?もう弱り果てています…

#include<stdio.h>
#include<stdlib.h>

void a(int*, int); //メモリ確保
void b(int*, int); //メモリ開放

main(int argc, char* argv)
{
int size;
int* array1;
int* array2;
size=10;

//うまくいく
array1 = (int*)malloc(sizeof(int)*size);
free(array1);

//うまくいかない!(bのところでメモリ領域破壊が…orz)
a(array2,size);
b(array2,size);
}

void a(int* array, int size){ array = (int*)malloc(sizeof(int)*size); }
void b(int* array, int size){ free(array); }

654 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 00:24:48 ]
> void a(int* array, int size){ array = (int*)malloc(sizeof(int)*size); }
arrayはarray2のコピーであり、それを書き換えたところでarray2にmallocの戻り値は代入されない。
したがって未初期化のarray2をbに渡し、それをfreeしようとしてお亡くなりになる。
やるならvoid a(int** array, int size) { *array = (int*)malloc(sizeof(int)*size); }

655 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 00:40:54 ]
>>653
関数a()に渡したarray2は、array2自体が何ら設定されていないのだがあんたの使うコンパイラは警告してくれないのか?
オプションで警告レベルを調整できるのなら引き上げておくことを進めておく。

で、件の目的なら>654でもいいがint * a(int size) {return malloc(sizeof(int) * size);}でもいいね。

656 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 01:07:52 ]
#include <stdio.h>
void f(int i) {i = 42;}
void g(int* p) {*p = 42;}
int main(void)
{
int x = 7;
f(x);
printf("%d\n", x);
g(&x);
printf("%d\n", x);
return 0;
}
上と同じ理屈。短絡的に言えば引数経由で値を返したいときには*の数を1個増やすということになる。
#include<stdio.h>
#include<stdlib.h>
void MyAlloc(int**, int);
void MyFree(int*, int);
int main(void)
{
int size = 10;
int* array2;
MyAlloc(&array2, size);
MyFree(array2, size);
return 0;
}
void MyAlloc(int** array, int size) {*array = (int*)malloc(sizeof(int) * size);}
void MyFree(int* array, int size) {free(array);}


657 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 19:47:47 ]
共有メモリ上にポインタを利用した連結リスト作成したいけど
どうやって作ればいいのですか?


658 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 14:52:37 ]
>654-656
有難う御座いました!なぜダメなのかも解りました。
これで課題の〆切に間に合いそうです.。。



659 名前:デフォルトの名無しさん [2007/03/02(金) 19:45:06 ]
Windowsでマイクロ秒まで測る方法を教えてください
環境は、WindowsXP+bcc32です。


660 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 17:46:55 ]
>>659
どんなアプリ作ろうとしてんの?
そもそもXPはRTOSじゃねーからマイクロ秒でなんらか
の値がとれたとしても精度はないよ?

661 名前:デフォルトの名無しさん [2007/03/10(土) 13:47:24 ]
Cを勉強したいんですが
まず最初に読んだらいい本ってありますか?
種類が多すぎてどれがいいか分からないんですけど

662 名前:デフォルトの名無しさん [2007/03/10(土) 22:36:29 ]
起動されているスレッドを順番に停止する関数を作りたいんですが、
何の関数を使えばいいんですかね?
pthread_join()は起動しているスレッドが自分で終了するまで待ってる関数だから
無限ループしているスレッドを終了できなし。
pthred_exit()はpthread_join()の戻り値を引数に使うからpthread_join()使わないと無理だし。

誰かお願いします。教えてください。

663 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 14:09:47 ]
>>661
ナカーマ
しかし俺はさっきコンパイルという言葉を知ったモロ初心者><

664 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 16:42:11 ]
推薦図書/必読書のためのスレッド PART34
pc11.2ch.net/test/read.cgi/tech/1173930196/l50

665 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 12:59:56 ]
#include <windows.h>
#include <stdio.h>


void main()
{
 double a;

 a = 2/6;
 printf("%f\n", a);
}

VC6にて上のように単純に2÷6を計算したら0が出力されます。
0.33333・・・を出したいのですがどうすればいいのでしょうか?


666 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 13:08:06 ]

解決済みです

667 名前:デフォルトの名無しさん [2007/05/14(月) 22:11:03 ]
windowsXP上でcのプログラミングをしたいのですが
フリーのものでコンパイラ、エディタなどでお勧めのものを教えてください

なるべく日本語のもので見易さ、編集しやすさ最優先で、
linux上でも動かしやすいものであれば嬉しいです(←これはついでなのでそこまで重要でもない)


668 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 23:51:43 ]
残念ながらcは英語をベースにした言語なので、「日本語のc」はありません。



669 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 01:39:33 ]
下らないレスするくらいなら相手するなよ…
>>667
好きなの選べ
ttp://homepage3.nifty.com/mmgames/c_guide/p_compiler.html

670 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 01:49:55 ]
>>667
Linuxなら、どのディストリにもgccが入っているだろうし、vi(vim)かそれが嫌ならemacsがあるだろ。
それを踏まえて、WinXPでもcygwin入れてgccを使えばいいし、取り敢えずvimでいいだろ。

671 名前:下らなさの2乗 mailto:sage [2007/05/15(火) 10:15:29 ]
>>668
「c」などという言語はありません。

672 名前:デフォルトの名無しさん [2007/05/20(日) 03:27:08 ]
OS:VineLinux
コンパイラ:gcc

こんばんは、ppm形式(フルカラーraw形式)の画像のピクセルごとの,R,G,Bの色のデータを
メモリを動的に確保して1次元の配列にぶち込みました。
これを任意の角度回転しようと考えているのですが、
どうも1次元の配列ですと直交座標で扱いにくく困っています。
そこで新たに二次元配列を動的に確保して・・・とも考えたのですが
元画像、出力画像のデータを取り込んでいるので、得策でもないような気がします。
なんとか直交座標系として扱いつつ、元画像を回転させて出力画像を作る方法ありませんでしょうか?
ソースがあるだとかよい案があればよろしくお願い致します。

673 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 03:50:33 ]
>>672
座標計算する関数を作ってしまうとか。
pc11.2ch.net/test/read.cgi/tech/1179301993/99


674 名前:デフォルトの名無しさん [2007/05/20(日) 06:03:17 ]
printfの書式で14.850000や2.00や5.012000の様に小数点以下で最後に0が続く場合、
その0を省略する方法を教えて下さい。

675 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 08:16:09 ]
>>674
(っ´▽`)っ
printf("%.0f\n", d);;

676 名前:デフォルトの名無しさん [2007/05/20(日) 08:19:40 ]
’0’、’1’、’2’、’3’を’-1’、’0’’、’1’、’2’に置き換えるためにhand=C-’0’-1とするのですが、この式の間の『’0’』の存在意義がよくわからないです。

677 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 08:29:08 ]
>>676
(っ´▽`)っ
>hand=C-’0’-1
このCには文字が入っているんじゃないかな?
このhandには数値が入っているんじゃないかな?
Cに'3'が入っている時を例に挙げよう。
'0' = 0x30 = 48
'3' = 0x33 = 51
hand = 51 - 48 - 1 = 2
つまり、文字を数値に変換するために'0'の値を引いているの。
'0'(文字の0)と0(数値のゼロ)は違うのはわかるよね。
メモリに格納される時のビット列が違うの。
2進法で考えると
'0'は00110000、0は00000000で格納されるよ

678 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 08:32:40 ]
>>674-675
それよりも%gだろ



679 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 08:34:52 ]
>>674
>>678
(っ´▽`)っ
そうだった!
%.0fだと小数点以下が全く出なくなっちゃうね☆


680 名前:デフォルトの名無しさん [2007/05/20(日) 08:38:50 ]
あっ、はい。文字としての扱いのままでatoiとかはしてありませんでした。
大変ありがとうございます。ところで、、'0' = 0x30 = 48
'3' = 0x33 = 51
とゆう式の流れはまだ学習していません。できれば教えて下さい。

681 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 09:01:43 ]
>>680
(っ´▽`)っ
文字コードだよ。
ISOとかそういう偉いところが0x30は'0'を表すって決めたんだよ。
ところで、0x30は「16進法で30」っていう意味だよ。
0xがつくと16進法
0がつくと8進法
ちなみに'\n'は0x0a、'\0'は0x00だよ。

682 名前:側近中の側近 ◆0351148456 [2007/05/20(日) 09:06:10 ]
(っ´▽`)っ
最も基本的な文字コード、ASCII
ttp://ja.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange

他の文字コードはASCIIを踏襲しているよ。
シフトJISとかunicodeとかもASCIIの文字コードを含んでいるよ。

683 名前:672 [2007/05/20(日) 09:21:35 ]
>>673
ありがとうございます。
座標の計算関数はできてはいるんですが、力及ばず入出力を二次元配列でしか設計できませんでした
ということでそっちに行ってきます

684 名前:デフォルトの名無しさん [2007/05/20(日) 09:23:06 ]
大変ありがとうございます。やっと理解できました。

685 名前:デフォルトの名無しさん [2007/05/20(日) 10:11:40 ]
やっぱわかんないちす。51と48は何を表してるんすか?てか16進法わからないです。

686 名前:デフォルトの名無しさん [2007/05/20(日) 10:19:34 ]
やっぱわかりました。十進法ですね。

687 名前:デフォルトの名無しさん [2007/06/05(火) 02:44:30 ]
文字コードの話題がちょうどでてるので、タイムリーに質問。

cygwinでgccでコンパイルするときって、shift-jis以外は使えないんでしょうか?
ちなみに、OSはwin-xp proです。

「表」の字がコンパイルしたら、エラーがでました。
んで、色々しらべて、shift-jisがまずくて、他にもエラーがでる文字があるってことまではわかったんですが、
解決法がいまいちわかりませんでしたorz

もちろん、ソースの文字コードを色々と丸々かえて、再コンパイルしてみましたが、
完全に文字化けしてしまいました。
解決法とかはありますか?
また、もし、他の文字コードを使えるのでしたら、オススメの文字コードとかありますか?

688 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:18:32 ]
>>687
つ input-charset
いろいろどころか全然調べてないだろ



689 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 04:31:44 ]
ついでにexec-charsetも

690 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 05:00:00 ]
んじゃ更に、
input-charset=euc-jp exec-charset=cp932
とか書いてみる。

691 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 03:06:28 ]
>>688-690
勉強になりました。
dです。

692 名前:デフォルトの名無しさん [2007/06/13(水) 13:28:58 ]
グローバルで宣言してた変数などを
ポインタ等使ってローカルでの宣言で実装すると
常時使ってるメモリは少なくなると思うんですけど
速度的にはグローバルで宣言したほうが良いんですか?


693 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 15:33:33 ]
>グローバルで宣言してた変数などを
>ポインタ等使ってローカルでの宣言で実装すると
>常時使ってるメモリは少なくなると思うんですけど
>速度的にはグローバルで宣言したほうが良いんですか?

グローバルかローカルかと言う議論にポインタは関係ない。
使用メモリを云々するほど広大なメモリを取り扱う話ならヒープを使うべきだ。
速度に関しては、実測が基本。


694 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 16:57:01 ]
これの話にポインタは関係ないですけど、
複数の関数で共通した変数使う場合に
普通はグローバルで宣言してしまいますけど
ポインタなど使えばローカルの宣言でもイケるけどどっちが速いのか
って事を聞きたかったんです。
けど、実測しかないですか。
メモリも抑えなきゃいけないんだけど速度を最重視して作らないいけなくてorz

695 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 17:27:44 ]
>>694
>複数の関数で共通した変数使う
ために
>ポインタなど使えばローカルの宣言でもイケる
というのはつまり、malloc() 等でヒープを確保するんだろ?
>普通はグローバルで宣言
した場合は static なデータとしてロード時に確保されるわけだが
使用するメモリ量にはまったく差がないし、速度にも有意な差があるとも思えん。
よって益々、>>693 の結論通り。

696 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 17:53:55 ]
速度は変わらないんですね。
それだけ教えていただいて感謝してます。
ありがとうございました。
ただ、メモリ量は差はあると思われます。

697 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 18:12:45 ]
スタックとヒープの区別もつかないやつが、「差はあると思われます」と言ってもなあ・・・

698 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 18:30:47 ]
メモリ使用の差の話は、静的確保だとプログラムの実行期間中ずっと
確保されたままなのに対して、動的確保だとそうではない、ということだろ。

>常時使ってるメモリは少なくなると思うんですけど



699 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 01:11:57 ]
寒いなスレ開いちまった。。
間違った事言ったなら質問者と回答者の立場はどうあれ一言くらい・・・

700 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:34:31 ]
初心者とか中級者とか上級者の堺はどのあたりだと思いますか?


701 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:01:11 ]
大阪のあたりじゃね?

702 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 06:08:03 ]
境でした。。すみません

703 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 10:14:38 ]
鳥取のあたりじゃね?

704 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:21:39 ]
東京にも武蔵野市に境がある

705 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:25:12 ]
住所にはないのに、町田市の駅にも境がある。

706 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 17:27:24 ]
私はあなたたちを少しかいかぶっていたみたいです
こんなにイライラするレスを返されたのは初めてではありませんが
それでもかなり上位に来るうざさだと思います
日本語が通じてるのにわざと他の意味を探す病気がPGには流行っているみたいですね
私の知り合いもそういうビョーキにかかっている時期がありました
本人はただふざけているだけのようなのですが
周りからしてみればはたはた迷惑です
面白くもなんともないのに本人は延々とボケを続けるんですからね
あなた方もそれと同じ事やっているんですけどどうですかわかりませんか
全然面白くないですよ少しはバラエティ番組でも見たらどうでしょうか
バラエティ番組見たからってあなたたちが面白い事を言えるとは思いませんが?
冷めるネタくらいは学習できると思いますちょっとあまりにもこれは酷い流れだと思います
更新されてないスレッドでもお気に入り登録にして毎日巡回でもしているんでしょうかね
質問スレで質問する人回答する人、スレは違っても同じだったりすることがよくあるんじゃないでしょうかね
けれど同じスレで違うことを聞かばスレ違いと言い別のスレで同じ人が答えたり?面白いですねそういうの
このスレの人達は凄くつまらないです一ミリたりとも笑える要素がないと思います
笑えるスレにしてくださいとは言いませんがこういう流れを作るんだったら
もう少しひねるとかしてくださいねってくださいね

707 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 17:30:45 ]
もう少しひねるとかしてくださいねってくださいねってくださいねってくださいねってくださいねってくださいね

いかん、流石に飽きた。

708 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 17:39:03 ]
>>706
初級とか中級とかワケ解らん質問したのお前なのか?
くだらん質問をしたのを反省しろよ



709 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 22:56:03 ]
>>706
人の振り見て輪が振りなおせ。そのレスもおもしろくないぞ。
おもしろくしたいと思うなら、まず自分からおもしろいレスというものを見せてほしい。

まあでも、この板にいるような人間なんて、それが本業ではないのだから、
おもしろさを期待するほうが間違っている。

と、やっぱりおもしろくないマジレスを返してみる。

710 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 04:32:22 ]
>>706
で、君は誰なの?

711 名前:デフォルトの名無しさん [2007/07/01(日) 21:21:08 ]
数式Parserのライブラリってご存知ないでしょうか?
複素数計算機能を付加したいんですが、
bcに丸投げというのも力づくすぎるような気がしてまして・・・・

712 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 22:46:54 ]
初歩的な質問で申し訳ないです
文字エンコードについての質問ですが、
HPから特定の文字列を検索して取得するプログラムを作ってたんですが、
対象のサイトの文字コードがEUCの場合、一旦JISに変換して文字列比較をしないといけないですよね?

文字エンコード変換の、簡単なソースを知ってたら教えていただけないでしょうか?


713 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 22:49:08 ]
>>712
EUC⇔SJIS⇔iso2022の変換は難しくないが、どうせUTFとの変換で悩む羽目になるから
iconvか何かのライブラリを使っとけ。

714 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 22:53:46 ]
>>713 
返信ありがとうございます。

勘違いしてました。
オープン・ソース使ってうまくいかないと思ってたら
EUC -> SJIS しなくてはいけないのに
SJIS -> EUC としてました。
お手数かけましたm(_ _)m

715 名前:デフォルトの名無しさん [2007/07/02(月) 00:15:07 ]
初歩的な質問ですがよろしくお願いします。

とある関数内で、malloc()でヒープ領域を確保して
得たポインタを別のタスクに投げ渡すという処理をしています。

他のタスクに投げ渡したら領域を確保した関数は、終了します。

malloc()で作った領域は、free()を行うまで領域の確保されているんですよね?
逆にmalloc()のヒープ領域で無く関数内で定義した変数のポインタだと
どうなってしまうんでしょうか?

関数終了しても変数のポインタさえ分かればどこからでも
値は取り出せそうなのですが・・・・・。

聞きたいこととしては、
・malloc()で得た領域は、関数が終了しても参照できますか?
・malloc()の代わりに関数内で定義した変数でも関数終了後に参照できますか?

です。よろしくおねがいます。


716 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 08:42:36 ]
>・malloc()で得た領域は、関数が終了しても参照できますか?
yes

>・malloc()の代わりに関数内で定義した変数でも関数終了後に参照できますか?
int *f(void)
{
  int local;
  return &local;
}
みたいなの?
それなら、関数終了時点でポインタは無効になる。

717 名前:デフォルトの名無しさん [2007/07/03(火) 01:18:45 ]
>>716
レスありがとうございます。

>・malloc()の代わりに関数内で定義した変数でも関数終了後に参照できますか?
の質問に対する例題としては、似たような感じです。
下のようにローカルなスコープで定義した変数を
他タスクに渡して処理を終えた時にもint localのポインタは有効であるか?
と言う事が気になってたのです。
丁寧な説明ありがとうございました。

int f( void ){
int local;

test(&local);   /* 他タスクへイベント要求 */
}


718 名前:デフォルトの名無しさん [2007/07/03(火) 11:19:17 ]
無効




719 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 15:27:36 ]
>>717
それだったら test() を終了後も local は使えるよ。
int local は f() からリターンするまで有効。


720 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 17:49:59 ]
>>719
質問を読み違えてないか?
タスク云々といってるんだから、testが引数をなんらかの形で保存していて、
それがfが終わった後も有効かという話だろ。






[ 続きを読む ] / [ 携帯版 ]

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

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