C言語のポインタで挫折したボケども。
■ このスレッドは過去ログ倉庫に格納されています
0001天才プログラマー
NGNG実は俺もそうなんだよ。
これからはBシェルだよ。
おまえらポインタをわかりやすく説明してください。
おながいします。
0002デフォルトの名無しさん
NGNG0003VB好き
NGNG0004天才プログラマー
NGNG0005デフォルトの名無しさん
NGNG0006VB好き
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1012402970/
確認したら削除依頼出して2度とスレたてんな。
0008天才プログラマー
NGNG実はこういう人が一番理解していなかったりするのです。
これからはCFML。
0009デフォルトの名無しさん
NGNGポインタなんぞすぐ分かると思うが。
0010デフォルトの名無しさん
NGNG0011天才プログラマー
NGNG経験してるわけねぇだろ。ボケェ
おれは天才プログラマーだぞ。
実際にメモリの中を見せて説明しろよな。
アドレス書かれてもわかんねぇーよ。
実際に目で見たもの以外信じらんねーよ。ボケェ。
0012デフォルトの名無しさん
NGNGプログラマに向いてないヤメロ
0013天才プログラマー
NGNG簡単に人の人生、否定するなよ。
o(iДi)o ボケェ
0014デフォルトの名無しさん
NGNG> 実際に目で見たもの以外信じらんねーよ。ボケェ。
そんなあなたには20年前のミニコンがぴったりです。
トグルスイッチによる入力とランプによる出力により
メモリの内容すべてが 2 進数で確認する事が出来ます。
0015デフォルトの名無しさん
NGNGhttp://www.st.rim.or.jp/~nkomatsu/premicro/corezoom2.JPG
こんなかんじですが。
0016デフォルトの名無しさん
NGNG0017天才プログラマー
NGNG何これ、畳?
この天才プログラマーに畳を見せてどうする気だ?ボケェ
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGこうやって練習しなよ。 ちょっとづついじって。
int main( int argc, char* argv[] )
{
..const char *szString= "bakashine";
..char result;
..__asm
..{
....mov ebx, [szString] ;←ebxレジスタをポインタszStringとして扱う。
....mov edx, 4 ;←edxレジスタをインデックスとして使う。
....mov al, [ebx + edx] ;←ebx+edx = szString + 4 のアドレスから1バイトalにコピー
....mov [result], al
..........................;つまり、 result = *(szString+4); と一緒。
..}
..printf("Result = %c\n", result );
..return(0);
}
結果は、s が出力される。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGポインタのポインタがわかりません!!
http://pc.2ch.net/test/read.cgi/tech/1011199511/
ポインタについて
http://pc.2ch.net/test/read.cgi/tech/1012402970/
リファレンスとポインタの違い
http://pc.2ch.net/test/read.cgi/tech/1013303403/
0022デフォルトの名無しさん
NGNGC++のインラインアセンブラの詳しい本とか知ってる?
教えてクンでスマソ
0023デフォルトの名無しさん
NGNGとりあえず、用語から入らないほうがいい気がする。
アドレスは、場所を意味している。それ以外の用途は無い。
コインロッカーに例えようか。
自分が預けたものはいじっても問題ないが、
他人のをいじると警察に捕まる。
そういう関係。
(逃げるとかの選択肢は用意されてない。)
(アドレスは、現在、開けるために見ている場所)
(この場合の刑罰は、PCが死ぬ確立を持ってること。)
0024デフォルトの名無しさん
NGNGC言語なら、俺に聞け! <12>
http://pc.2ch.net/test/read.cgi/tech/1012348974/l50
んなポコポコ「Cの〜」ってスレ立てんなよ。
0025天才プログラマー
NGNG0026デフォルトの名無しさん
NGNG良く分かっていないDQNプルグラマが嬉しげに使うもの。
彼らの手にかかればポインタもintもcharもキャストの下に平等である。
0027天才プログラマー
NGNGよぐわがんない。
0028デフォルトの名無しさん
NGNGコアメモリ知ってるなんて結構な歳と見た。
0029デフォルトの名無しさん
NGNGとりあえず、Cの入門書よく読め!
いくらなんでも、キャストぐらい分かると思うぞ。
つーかネタ?
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGうんこの場所 : ポインタ
うんこの場所が指すもの(うんこ型の実体)を糞型で扱う : キャスト
0032デフォルトの名無しさん
NGNGもっといい例えはないのかね?
0033デフォルトの名無しさん
NGNGワロタ
0034デフォルトの名無しさん
NGNGC++のインライン・アセンブラに関しては、__asm 以上覚えることはないよ。
というより、PCだったら、Pentiumのインストラクション表をIntel のサイトでゲット。
http://developer.intel.com/design/pentium4/manuals/
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG>彼女の家で昔の彼女を想像してセクース : キャスト
彼女の服を脱がす、あるいは、適当な服を着せるとか。
0038デフォルトの名無しさん
NGNGcharの配列の先頭アドレスを入れるって覚えとけばいいんじゃないの?
でも、正直
char *baka="aho";
って初期化すると文字列を入れられるってのはなぁ、微妙。
0039デフォルトの名無しさん
NGNG> 彼女の服を脱がす、あるいは、適当な服を着せるとか。
それだとポインタをキャストするのが伝わらないから
彼女の家でコスプレプレー : キャスト
0041デフォルトの名無しさん
NGNGこれじゃ違うな。
修正して
彼女の家を病院だと思って脳内看護婦プレー : キャスト
0042厨ニのヲタク希望
NGNG0043デフォルトの名無しさん
NGNG> でも、正直
> char *baka="aho";
> って初期化すると文字列を入れられるってのはなぁ、微妙。
"aho" = {'a', 'h', 'o', 0} = charの配列
の先頭アドレスを代入しているだけだと思いますが、何か問題が?
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNGC特有の「配列=ポインタ」の概念が他言語からプログラムを始めた人には
納得しづらい点だと思われ
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNGintもポインタだったかね、Javaってのは?
0052デフォルトの名無しさん
NGNG50は前橋本の真似してるだけだからほっとけ。
>intもポインタだったかね、Javaってのは?
という書き方をすると単なる51の質問と
誤解するアホもでてくるだろう。
0053デフォルトの名無しさん
NGNG0054ちょっと違うな
NGNGパンツ(白&イチゴ) : ポインタ
パンツを履き替える(黒の豹柄) : キャスト
ダッチワ○フ : リファレンス
コンニャク : リファレンス
掃除機 : リファレンス
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG対エラーへ安易に使うのはやばいのでやめよう。
Ex, float型の小数点以下を切りたい時にint型にキャストすることで、実現できる。
#それは、int型が小数点以下を使えないように設計されているのを利用している。
特にアドレス関係だと、
型の違いで見ることのできる目盛りの幅が違うから手違いがあると大変。
#char=>1バイト
#DWORD=>4バイト
#さて、DWORD一個に相当するcharは何個?
#なお、intは「xビットCPU」と呼ばれる「x」に依存するところが大きいので固定ではない。
#最近のペンティアムは32ビットだから、intは4バイト。
0057デフォルトの名無しさん
NGNGWin限定かよ。
0058デフォルトの名無しさん
NGNGまんこに入ったちんこ : ポインタ
口に入ったちんこ : キャスト
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNGlongは4バイトだっけ...。(汗
intの2倍って覚えてたし、あんま使わないから引き合いに出すのから逃げた・・・。
>58
どんどんわけがわからなくなってる気がする。
>59
言葉のアヤっす、笑って許して・・・。(大汗
うーん、そのAA作った人に感心するよ・・・。
0061デフォルトの名無しさん
NGNG特にUNIX。
0062デフォルトの名無しさん
NGNGうーん。正確には『ポインタ=配列』ではなかったようなきが。。。
例えば
char *a = "test";とchar a[] = "test";
とかね。
0063デフォルトの名無しさん
NGNGlong(int)はintよりも短くてはならないというだけでintの2倍とは限らないよ。
現に俺の環境だとlongもintも4bytesだし。
0064デフォルトの名無しさん
NGNG関数の仮引数でしか成り立たんばい
0065デフォルトの名無しさん
NGNG>>34
ありがと。
0066デフォルトの名無しさん
NGNG宣言では?あとで配列にするやつ。
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNG猟犬ですよ。
獲物の場所を前足で指し示して、主人に知らせるのでポインターっていうそうだよ。
0069デフォルトの名無しさん
NGNG0070Sandy
NGNG私はここで毎月、大好きな温泉代を稼いでいます。
http://goo.gaiax.com/home/annarisapapa
ここでお待ちしてま〜す。
Sandy
0071デフォルトの名無しさん
NGNGp.c(1) : error C2143: 構文エラー : ')' が '*' の前に必要です。
p.c(1) : error C2143: 構文エラー : '{' が '*' の前に必要です。
p.c(1) : error C2059: 構文エラー : ')'
0073デフォルトの名無しさん
NGNG> long(int)はintよりも短くてはならないというだけでintの2倍とは限らないよ。
おぅ…、intのサイズが処理系依存なのは認識してたけど、
shortは16bit、longは32bit と信じてたよ。
(sizeof(long) >= 4) && (sizeof(long) >= sizeof(int))
だったのね。
0074デフォルトの名無しさん
NGNGtypedef char* rettype(const double *c);
rettype *hello2( const double *a, functype *b );
素直になろうよ。
0075天才プログラマー
NGNG一日待ったけど。ろくな説明ないな。
0076デフォルトの名無しさん
NGNG2a 〈役を〉割り当てる; 〈劇・映画などの〉役を割り当てる.→
b +目+前+(代)名〈俳優に〉〔…(の役)を〕振り当てる 〔as,in,for〕.→
by エキサイト翻訳
これでピンと来ないなら知らん。
0077デフォルトの名無しさん
NGNG意味:型変換。狭義には、明示なもののみを指す。
用法1:char ch=(char)int_value;
用法2:void*からの変換に。char *p = (char*)malloc( length );
用法3:邪悪な変換。 int *i = (int*)float_pointer;
用法4:constはがし。char*p=(char*)const_pointer;
0078デフォルトの名無しさん
NGNG直接代入できるくらいに覚えておけばいい
どっかの本に載ってたんだが、例えば
void dainyu(int p1,int p2){
int x;
x=p1;
p1=p2;
p2=x;
}
という関数を作る。この関数を使って値をやり取りしようとすると
main(){
int n1=100,n2=200;
dainyu(n1,n2);
}
となる。これを見ると最初n1=100,n2=200でその後関数を使って値を交換して
n1=200,n2=100になるはずだが、Cの仕様上できない。
そこでポインタを使って直接そのメモリに書き込んでしまえば万事解決。
ポインタとは”強引なドリブル”なのだ〜♪
0079デフォルトの名無しさん
NGNG交換なのにdainyuという罠。
0080天才プログラマー
NGNGたしかにそれだとn1とn2の値は変わってないね。
で、ポインタだとどうやるわけ?
ポインタを使うしかないの?
0081デフォルトの名無しさん
NGNG嫌でも理解できるでしょう。
0082デフォルトの名無しさん
NGNGC99に参照はついてないはずだから、Yes。
C++なら、参照を使う手があり、つか、普通そうする。
>で、ポインタだとどうやるわけ?
void swap(int *p1,int *p2){
int x=*p1;
*p1=*p2;
*p2=x;
}
swap(&n1,&n2);
だろ。
0083デフォルトの名無しさん
NGNGhelloは
(読みだし専用のcoble型へのポインタを引数とし)
char型ポインタを返す関数への
ポインタを返す
(
第一引数が読みだし専用のdolbule型へのポインタであり、
第二引数が
(読みだし専用のdouble型へのポインタを取る)
戻り値がない関数へのポインタである
)
関数である。
これでいいの?
0084天才プログラマー
NGNGアセンブラは確か大学で習ったな。
そのときは自分が今何を勉強しているかもわからずに、授業受けてた。
これが何に使うものなのかも教えられずに・・
コンピュータの仕組みもわかってなかったのに。
あの時習ったのがアセンブラだったのか、と気づいたのは卒業してから。
なんか間違ってねぇか?大学ってのはよ。
話それたな。
0086デフォルトの名無しさん
NGNGそれでほんとにできないの?
0087
NGNG引数渡しはあくまで値のコピーどすえ。
変数aの値のコピーと変数aのアドレス値のコピーでは全然違い
まっせ。
0088ドキュン86
NGNGここを見て納得しました。
0089天才プログラマー
NGNG0090デフォルトの名無しさん
NGNG変数のポインタを伝播させなければ、書き換えられない。
stackとアセンブラを絡めた邪悪で機種依存な方法が
ひょっとするとあるかもしれないが。
0091デフォルトの名無しさん
NGNGこいつ前に「俺にC言語を1から教えるスレ」を立てた奴じゃねーの?
天才とかいって単なる教えて君だし
0092天才プログラマー
NGNG悪いがそんなものは知らん。
この板にスレを立てたのは初めてだ。
で、キャストって何?
0093デフォルトの名無しさん
NGNGえーと、つまりは局所変数が格納されている仮想アドレスを如何に
知るかと言う問題です。
ポインタ値をコピーすると言うことは、いわばその変数の格納されて
いる仮想アドレスを教えてあげるということにほかなりませんです。
(ちなみに仮想アドレスから物理アドレスへの変換は、仮想アドレス
をサポートしているosであれば、osさんがよきに計らってくれます。)
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG入門書ぐらい読めボケェ!!
0096ドキュン86
NGNGでは、例えば、グローバル変数として定義した変数を使うと、ポインタを
使わずに先ほどのswap関数みたいなものが書けるのでしょうか。
0097デフォルトの名無しさん
NGNGよーするに赤いうんこを茶色のうんこに変換したり
茶色のうんこを黒いうんこに変換するようなもんだ。
0099デフォルトの名無しさん
NGNGint g_a, g_b;
void swap_g_ab()
{
int i = g_a; g_a = g_b; g_b=g_a;
}
でどうよ。
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNGそんなもんの為にグローバル変数使うなよ。
0102
NGNGはい、出来ます。
でもまず聞く前に、ちゃんとしたコンパイル環境があったら試して
くださいませ。
0103デフォルトの名無しさん
NGNGグローバル変数使えばポインタ使わなくてもできる
どっちがいいかは賛否両論あるけどね
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNG「賛」な意見を、是非聞かせてもらいたい。
010678
NGNG他の人が色々答えてくれている通りです。
>>82さんの補足をするなら、参照引数を使うことにより
void dainyu(int &p1,int &p2){以下略
とするだけで、他は書き換えずに済みます。
0107
NGNGあるいは
int *ga;int *gb;
void swap ( void )
{int tmp;tmp = *ga;*ga = *gb;*gb = tmp;}
void main ( void ){ int a=3;int b=4;ga=&a;gb=&b;
swap();
}
とかかな?
0108デフォルトの名無しさん
NGNGグローバル変数なんかだめだよ。
Thread safeじゃなくちゃね。
0109デフォルトの名無しさん
NGNG少し速くなる・・・のか?
0110デフォルトの名無しさん
NGNG補足、特定の変数しか処理対象になってない99の関数は、82の関数とはまるで別物ではないの?
グローバル変数使って任意のローカル変数の値を交換できるサンプルキボン(w
0111ドキュン86
NGNG(103さんは「賛否両論」とおっしゃっていますが。)
やっぱり、いろいろソースを読んで、定石のようなものを学ばなければいけない
ということですよね。
011278
NGNG他の人が色々答えてくれている通りです
>>82さんの補足をするなら、参照引数を使うことにより
void dainyu(int &p1,int &p2){以下略
とするだけで、他は書き換えずに済みます
0113デフォルトの名無しさん
NGNG誤爆?
0114デフォルトの名無しさん
NGNGEnterCriticalSection(&Work_cs);
Work = var;
var = foo;
foo = Work;
LeaveCriticalSection(&Work_cs);
0115デフォルトの名無しさん
NGNG「完全制覇」と「柴田望洋のポインタ本」の
どちらがいいと思いますか?
0116デフォルトの名無しさん
NGNGどっちも知らん。
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNGできません。
0119デフォルトの名無しさん
NGNGそういうもんだと思って使ってるけどなんか腑に落ちない。
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG他の方法があると思うなら、それを挙げてくれ。
0123デフォルトの名無しさん
NGNG実アドレスをハードコーティングしたいの?
0124119
NGNG何がわからないのか自分でもわからない…。
0125デフォルトの名無しさん
NGNGまずは、スタック構造、キュー構造を理解するが良い!
0126デフォルトの名無しさん
NGNGmalloc使うのはコンパイル時に配列やバッファのサイズが判らない
(=ユーザーの入力によって決まる)場合に使われることが多い。
例えばエディタなんかはテキストの行数が数行から数千行まで変化するので、
あらかじめ固定の配列で確保しておくことができない。
こういった場合、ユーザーの入力で一行増やす毎に
mallocしてその行専用のバッファを確保するような作りにする。
0127デフォルトの名無しさん
NGNGCの(腐ってる)仕様の一つ
0128デフォルトの名無しさん
NGNG関数を抜けるときに変数は消えても確保した領域は消えないから別にいいと思うが。
見失ってfreeできないという事態にさえならなければ。
0129天才プログラマー
NGNGおまえら、素人にもわかりやすく説明してください。
0130デフォルトの名無しさん
NGNGint num;
char buffer[num];
C99 限定ではあるが。
0131デフォルトの名無しさん
NGNGそれでスコープから外れた後どうするんだ?
0132デフォルトの名無しさん
NGNGBASICを思い出すなー。
それはそれで便利だけど、
同名のものがすでにある時ってどうするのかなぁ。
残ったりしない??
0133デフォルトの名無しさん
NGNGそりゃあ…結局 malloc(w
0134133
NGNGまぁ必要とする領域の「寿命」によって使い分ける、と。
0135ちゃちゃ
NGNGmallocを使って確保するのは動的変数じゃなくて、メモリー領域ぞね。
とちゃちゃをいれてみる。
0137天才プログラマー
NGNGchar *buf
って宣言したら配列になるの?
0138デフォルトの名無しさん
NGNG∧∧ ミ _ ドスッ
( ,,)┌─┴┴─┐
/ つ 糸冬 了. |
〜′ /´ └─┬┬─┘
∪ ∪ ││ _ε3
0139デフォルトの名無しさん
NGNGお前定期的に書き込みしてるみたいだが、何がしたいんだ?
マジに勉強したいなら本読んでから聞け。
0141デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG全然面白くないです。
0144だからageんなって
NGNGアドレスを保持できるだけの領域を持つ変数の宣言。
char buf[256];
のようにすれば別。
配列は変数の集合で上の宣言は
char buf1,buf2, ... buf256;
と同じ(アドレスが順番なら)
0145デフォルトの名無しさん
NGNGアンタも答えてやるなよ。
0146145
NGNG0147デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1013990673/
C言語なら、俺に聞け! <13>
http://pc.2ch.net/test/read.cgi/tech/1013990673/
C言語なら、俺に聞け! <13>
http://pc.2ch.net/test/read.cgi/tech/1013990673/
C言語なら、俺に聞け! <13>
http://pc.2ch.net/test/read.cgi/tech/1013990673/
0148デフォルトの名無しさん
NGNGΛ_Λ | おめでとう!このスレがクソスレ・オブ・ザ・イヤー |
( ´∀`)< にノミネートされたよ(w │
( ΛΛ つ >―――――――――――――――――――‐<
( ゚Д゚) < この中にお前の立てたこのクソスレの名前も │
/つつ | 入るんだぜ、よかったな |
\____________________/
■■□■■クソスレ・オブ・ザ・イヤー2002 ノミネート作品■■□■■
・レスした奴は馬鹿(1)
・ちんこ(1)
・ あ(1)
・逝ってよし(1)
・いいパソコン教えて(1)
・あsfさぎf(1)
・インターネットが壊れた(1)
・aaa(1)
・モーム巣の写真ください(1)
・■■■■■■■■■■■■(1)
・ネットサーフィンやろうよ!!(1)
・厨房集まれ〜!!(1)
0149デフォルトの名無しさん
NGNG( ´Д` )< 重複スレを立てたので、通報しますた
/, / \
(ぃ9 | __i  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ /、 l__l
/ ∧_二,/_/
/ /
/ \
□重複スレで板を荒らさないでください。すでにあるスレを使いましょう。
0150デフォルトの名無しさん
NGNGそのスレに誘導するとそのスレの住人に迷惑がかかるな。。
0151天才プログラマー
NGNGこれも時代だな・・・
0152天才プログラマー
NGNGだいたい何で「お前のスレは糞スレ」とか言ってんだ?
ここは俺のためのスレじゃなくて、いろんなやつが
話し合えるように立てられたスレなんだよ!
最初に俺が自分のスレ立てただけで、そんなに悪いのか? あ?
お前等、みんな白痴なんじゃねぇのか?
それから俺のことを馬鹿扱いしてる阿呆ども!
俺は偏差値60の大学出身って言ってんだろ?
俺が馬鹿なわけねぇだろ。全部ネタだよ。
厨房釣って楽しんでただけなんだよ!
あと俺の一生懸命立てたスレをけなしたやつら!
自分じゃ創作のひとつもできないくせに偉そうなことぬかすな!
つか、本当はこんな凄いスレを立てた俺のこと羨ましいんだろ?
ま、ここで俺を馬鹿にした全員が謝罪すればもっとすごい名スレを立てて
やってもいいけどな!
ほら、はやく謝罪しろよ!
0153天才プログラマー
NGNG読まないとは何事だ!!!!!!!読んで意味が理解できないのか、読んでいないのか、読む気がないのかは
知らんが最低限の事は守れ!!!!ここでの管理人はおれだ!!!!!ここでのルール守れない人間はくるな、
邪魔以外の何者でもない、消え去れ
0154デフォルトの名無しさん
NGNG| ID変えて自作自演でage続けるんだ!!!
| 1000まで逝って名スレにするんだ!!!
| きっと職人さんも有名コテハンさんも来てくれる!!!
\___________ ____
∨ カタカタ____ ___
∧_∧ ||\ .\ |◎ |
(.#`Д´) || | ̄ ̄| |:[].|
∧_∧ . ┌( つ/ ̄l| / ̄ ̄/ ..| =|
∧_∧ ( TДT) |└ ヽ |二二二」二二二二二二二二」
( TДT) ( つつ  ̄]||__) | || | ||
(つ つ / / / ./ ̄\ / || / ||
と_)_) (___)__) ◎ ◎ .[___|| .[___||
∧
/ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| >>1よ、もういいんだ・・・・・・・
| 本当に良く頑張った・・・もう充分じゃないか・・・
| 楽になっていいんだ・・
■ このスレッドは過去ログ倉庫に格納されています