俺が世界一わかりやすい「C言語」のポインターの説明をしてやる

#1.

ニュー速VIP ID:pvMctC3h0

【新しいC言語講座】ポインタの基本(1)
1、C言語では1つの変数を宣言すると「実は」2つの領域ができる(int)
1がOSが管理するポインターで、2がお前が自由に使える箱だ

12
↓↓
・□

2、C言語では「実は」ポインターを入れる箱を宣言することができる(int*)
1がOSが管理するポインターで、2がポインターを入れる箱で、3がお前が自由に使える箱だ

123
↓↓↓
・□□

3、C言語では「実は」ポインターを入れるポインターを入れる…以下繰り返し(int**)
1がOSが管理するポインターで、2がポインターを入れる箱で、3がポインターを入れる箱で、4がお前が自由に使える箱だ

1234
↓↓↓↓
・□□□

#5.

ニュー速VIP ID:L1NiaCXz0

>>1つの変数を宣言すると「実は」2つの領域ができる

変な理解をしてるな

#13.

ニュー速VIP ID:pvMctC3h0

>>5
どこがおかしいんだよ言ってみろよ

>>7
じゃあ俺よりわかりやすい説明をしてみて?

>>8
それはお前が自由に使える箱「だけ」のサイズだから

#16.

ニュー速VIP ID:L1NiaCXz0

>>13
ポインターってのはバイナリのアドレスのこと
お前はなぜアドレスの事を領域だと思ったのか?
ちょっと自分なりに言ってみろ

#20.

ニュー速VIP ID:pvMctC3h0

>>16
OSにとってはメモリーが自由に使える「領域」だから
どう?完璧な説明でしょ?

#24.

ニュー速VIP ID:L1NiaCXz0

>>20
今気づいたがお前OSについて何も理解できてないな
OSが何の仕事をしてるのか言ってみろ

#26.

ニュー速VIP ID:pvMctC3h0

>>24
ユーザーに対するコンピューター資源の割り当て
どう?完璧でしょ?

#19.

ニュー速VIP ID:GTUi8DfFM

>>13
変数の領域と同時に変数へのポインタの領域を確保
変数へのポインタの領域と同時にポインタへのポインタの領域を確保
ポインタへのポインタの領域と同時に…
終わらなくない?

#21.

ニュー速VIP ID:pvMctC3h0

>>19
OSが管理するポインターの所で終わってるじゃん

#25.

ニュー速VIP ID:GTUi8DfFM

>>21
int**...*(*が100個)の変数を宣言すると箱が101個作られる?

#28.

ニュー速VIP ID:pvMctC3h0

>>25
論理的には可能だよ、論理的には、ね

#22.

ニュー速VIP ID:gpUKjxEj0

バイナリなんて言葉は知ってないとわからない取っ掛かりとしては少し変でも>>1の方がイメージしやすい

#23.

ニュー速VIP ID:pvMctC3h0

>>22
やった!そういってくれてありがとう!

#2.

ニュー速VIP ID:pvMctC3h0

これだけのこと

#3.

ニュー速VIP ID:UKubQ3Li0

もうマスターしたわ

#4.

ニュー速VIP ID:P28P6FUv0

懐かしい…

#6.

ニュー速VIP ID:pvMctC3h0

どうだわかりやすかっただろ?

#7.

ニュー速VIP ID:P28P6FUv0

ぶっちゃけ分かりやすくはない

#8.

ニュー速VIP ID:GTUi8DfFM

でもsizeofは2の領域サイズしか出ないよどうして?

#9.

ニュー速VIP ID:pvMctC3h0

俺も初学者の時にこうやって教えてもらえれば一発だったのに

#10.

ニュー速VIP ID:L1NiaCXz0

>>9
ハッキリ言ってお前にはセンスがない
理解力が低い

#14.

ニュー速VIP ID:pvMctC3h0

>>10
だからどこがどうおかしいのか言ってみろって言ってんだよ

#11.

ニュー速VIP ID:cgQcRWtha

ポインターで止めるやつ多すぎるのは、他人のプログラム読むのが苦痛だから

#64.

ニュー速VIP ID:Y/MmWLrA0

>>11
周りからポインタは難しいって先入観を与えるから余計にそう思われてそうでちょっと可哀想
まあ、全く理解できんが

#12.

ニュー速VIP ID:GJckQxMf0

ポインタを定義しろ

#15.

ニュー速VIP ID:7POr5SMv0

なんか分かりやすいぞ!
VBAで例えたら何かいい例ある?

#17.

ニュー速VIP ID:pvMctC3h0

>>15
VBAやったことない

#18.

ニュー速VIP ID:b+NTu3I50

アドレス出せばわかりやすくなる

#27.

ニュー速VIP ID:GJckQxMf0

OSが無いとcは動かないわけ?

#30.

ニュー速VIP ID:pvMctC3h0

>>27
そりゃ例えばmallocがOSに対する要求の命令だからな

#31.

ニュー速VIP ID:L1NiaCXz0

>>30
ヒープとスタックの説明をしてみろ

#32.

ニュー速VIP ID:pvMctC3h0

>>31
ヒープはメモリーの領域のことでスタックはCPUのキャッシュの領域のことじゃなかったっけ?
な?完璧だろ?

#90.

ニュー速VIP ID:ZuJNOAQh0

>>32
スタックもヒープもメモリにあるよ
ただスタックがどこにあるのかっていうのをcpuのebpレジスタであったりespレジスタに格納されてるアドレスで判断してるってだけ

#29.

ニュー速VIP ID:q3cqFlDf0

なに言ってるのかわからん おやすみ

#33.

ニュー速VIP ID:TvXnPV1Z0

頭の悪い人ってこうやって間違えていくんだな…

#35.

ニュー速VIP ID:pvMctC3h0

>>33
これは俺がC言語(C++)を勉強に勉強しまくって出した結論だよ
だったら俺よりわかりやすい説明をしてみな?

#34.

ニュー速VIP ID:GTUi8DfFM

p, qの確保される領域は適当だけど
int *p = &a, int **q = &p;
はこうなるんじゃない?
pq
|| ||
1234
↓↓↓↓
□apq
*p*q
**q

#36.

ニュー速VIP ID:pvMctC3h0

>>34
あえてわかりにくい説明乙

#38.

ニュー速VIP ID:L1NiaCXz0

>>36
これわかんなかったか
アドレスがなんなのか説明してみろ

#39.

ニュー速VIP ID:pvMctC3h0

>>38
アドレスはただの番号だね
32bitOSなら32ビットの変数に入るし64bitOSなら64ビットの変数に入る

#41.

ニュー速VIP ID:L1NiaCXz0

>>39
もうわかった

なんでC言語勉強したくなったの?

#42.

ニュー速VIP ID:pvMctC3h0

>>41
今はもう時代遅れかなVectorでフリーソフトで遊びまくって俺もこんなソフト作ってみてぇって思ったんだ
今はDirectX 11とか12を直接叩いてゲーム的なものを開発している

#46.

ニュー速VIP ID:L1NiaCXz0

>>42
大して本気じゃないかんじ?

#48.

ニュー速VIP ID:pvMctC3h0

>>46
いや本気だよ
作ったソフトがヒットすればいいと思ってるし今後はIT会社に就職したくていまは浪人中

#51.

ニュー速VIP ID:L1NiaCXz0

>>48
大学で真面目に勉強しなかった?

#53.

ニュー速VIP ID:pvMctC3h0

>>51
まあそんな感じ大学はFラン大だしな

#56.

ニュー速VIP ID:L1NiaCXz0

>>53
素直なのはすごく良い
今のところ厳しいとしか言いようがないが

大分変な知識で理解してるところを見ると
他人と会話するのが難しいかんじ?

#57.

ニュー速VIP ID:pvMctC3h0

>>56
変な知識ってどこがだよ?完璧じゃんかよ
ホストみたいな会話はできないけど普通に会話くらいはできるよ

#59.

ニュー速VIP ID:L1NiaCXz0

>>57
ポインタはアドレスですよって言われたときに
なんでそうじゃないって思ってしまうの?

#60.

ニュー速VIP ID:pvMctC3h0

>>59
ポインターはアドレスじゃないとは言っていない
アドレスという単語を使って遠回りして説明しなくても説明できるからそうしてるだけ

わかりやすい人はアドレスと言えばいいんじゃない?

#62.

ニュー速VIP ID:L1NiaCXz0

>>60
遠回りしてるのは「領域」とかいう謎単語を作り出してるお前なのよ

大学は情報系だったの?

#65.

ニュー速VIP ID:pvMctC3h0

>>62
アホだなー
「領域」という一般的に通用するわかりやすい言葉で言い換えてる所がミソなのよ

人に大学のことを聞くよりお前こそ人にわかりやすい説明ができるようにこころがけたら?

#66.

ニュー速VIP ID:L1NiaCXz0

>>65
友達いないでしょ?

#71.

ニュー速VIP ID:a+lZpHqh0

>>66
友達いないからって論点すり替えるなよ
いいからお前がまず説明してみろ

#61.

ニュー速VIP ID:VnmJ8HNEM

>>59
発言の数々幼稚すぎじゃないですか?WW

#40.

ニュー速VIP ID:GTUi8DfFM

>>36
確保されるのはa, p, qの値だけって言わないと嘘になるんじゃない?
C言語は値だけを扱う言語だしここにOSの助けはいらないよ
UNIXを作るためにC言語が生まれたよ

#37.

ニュー速VIP ID:dcyUi28zd

JavaScriptを1時間で諦めた俺にはちんぷんかんぷん

#43.

ニュー速VIP ID:dL9FMFFNM

最初は戸惑うけどな
普通はダブルポインタも使いこなせるようになる

ポインタをアスタリスクで表現するってのは定義としては失敗だと思ってる

#44.

ニュー速VIP ID:vTA8NkIi0

int *a = &b;
って宣言がキモくて無理 あらゆる入門書の一行目に出てくるけど
int *a; a = &b;
の方が好き。aの指すアドレスはbですよーって分かりやすい

#45.

ニュー速VIP ID:9leN8+NT0

C言語だけにいつもC判定だったからね、なに言ってるのかわかんね

#49.

ニュー速VIP ID:r4m4Cv5c0

クッソわかりやすくて草
ちな読んでないメンスw

#52.

ニュー速VIP ID:GTUi8DfFM

おいたんがんばえー

#54.

ニュー速VIP ID:pvMctC3h0

>>52
相手してくれてありがとう!

#55.

ニュー速VIP ID:Z80Gxwp50

C知らんけど値と参照とは違うの?

#58.

ニュー速VIP ID:pvMctC3h0

>>55
俺もC(C++)以外は詳しくないからあんまり不用意なことは言えない
けどこのポインターに関する説明は完璧だぜ!

#63.

ニュー速VIP ID:RdgpkO+pa

先生!変数ってなんですか!?

#67.

ニュー速VIP ID:Y/MmWLrA0

>>63
変な数字のことだよ

#94.

ニュー速VIP ID:P9xTmjkVa

>>67
ん゛んぅう゛ぅうぅ~ぅ!(顔面にアイロンを押し当てる)

#72.

ニュー速VIP ID:pvMctC3h0

>>63
変数がわからないって人は何言ってもわからないかわざと言ってるだけだと思う
「変数」って単語は直観的だから説明しなくてもわかるんだよね

#74.

ニュー速VIP ID:L1NiaCXz0

>>72
それだと大学の偏差値は40くらい?

#68.

ニュー速VIP ID:r0JQeXMp0

ただの矢印だろ
世の中で言われるほど難しいと思ったことはない

#70.

ニュー速VIP ID:Y/MmWLrA0

>>68
こういう時に使うと便利ですよってサンプル添えた方がわかりやすい

#73.

ニュー速VIP ID:MXajztL30

(´・ω・`)ポインタがわかりにくい人は
int* tinpo;
(´・ω・`)と型のほうに*をつけるとよいよ

#75.

ニュー速VIP ID:a+lZpHqh0

VIPには頻繁にID:L1NiaCXz0みたいなキチガイがいるんだ
1は相手しなくていいぞ

#76.

ニュー速VIP ID:jwgMEZvK0

魯迅の藤野先生を思い出す

#77.

ニュー速VIP ID:L1NiaCXz0

おい
はよ

#78.

ニュー速VIP ID:lFOqI2EO0

友達いなさそうキチガイに絡まれててワロタ

#79.

ニュー速VIP ID:7POr5SMv0

このイッチはすごい。ワイは応援してるぞ頑張れ!

#80.

ニュー速VIP ID:L1NiaCXz0

変な知識で歪んだ理解してる人って大学で変な勉強してた人なのよ

そこで問題なのは
変な理解が出来てしまう事
これで自分が頭良いと誤解するんだ

#81.

ニュー速VIP ID:vg9L6S5f0

結局ポインタ使うメリットは?

#83.

ニュー速VIP ID:4gU8W5U+0

>>81
特定範囲にレコードがある場合そのレコード事態は移せないのでレコードのアドレスを指定しないといけない場合があってその時に使ったり
配列に関数のアドレス入れて順番に回したり
オリジナルのクラスの先頭アドレス指定したりその中のオリジナルの型のアドレス指定したり
くらいしか知らない

#86.

ニュー速VIP ID:L1NiaCXz0

>>83
Cプログラミングでレコードなんて言葉使うことは一生ない
なんなんだこのスレの変な言葉遣いの嵐は・・・

#87.

ニュー速VIP ID:4gU8W5U+0

>>86
うんだってレコードはシーシャープからだし
別にただの二次元配列とかでもいいんだよ
言葉にこだわりがあるみたいだけど

#82.

ニュー速VIP ID:SvEeVzPj0

ハードウェア制御とかしないとあんま使わないんじゃないか?

#84.

ニュー速VIP ID:MXajztL30

(´・ω・`)ポインタが必要になるのは参照渡しはもちろんのことvoid*にして型をあいまいにして渡すケースだ

#85.

ニュー速VIP ID:pKoD0Ewoa

で、結局ポインターって何のことなの?

#91.

ニュー速VIP ID:4gU8W5U+0

>>85
あれだよ、授業とかで赤マルのポインタでスクリーンにポイントするやつ

#89.

ニュー速VIP ID:ZuJNOAQh0

ポインタの説明をするのになんで説明文にポインタあるんだよワロタ

#92.

ニュー速VIP ID:iY5uguxI0

C言語ってどこの国のことばなの?

#1001.

ニュー速VIP ID:FFFFF1001

#1002.

ニュー速VIP ID:FFFFF1002

#1003.

ニュー速VIP ID:FFFFF1003

C言語[完全]入門

新・明解C言語 入門編 第2版

新・明解C言語 中級編 第2版 (新・明解シリーズ)

#1004.

ニュー速VIP ID:FFFFF1004

元スレ:https://mi.5ch.net/test/read.cgi/news4vip/1665520236/

コメントフォーム

【コメント欄の仕様について】
>>、>、>>、>、#、#レスNo」で記事本文の各レスへのポップアップ付きアンカー(リンク表示)が飛ばせます。
また、「※コメントNo」でコメント欄へのポップアップ付きアンカー(リンク表示)が飛ばせます。
(「返信」リンククリックで投稿フォームに生成されます)


記事本文レス3にアンカーする場合: >>3、>3、>>3、>3、#3、#3
コメント欄21にアンカーする場合: ※21

【いいね!数の仕様について】
いいね!数に応じて、青色群青色青緑の順に本文の色が変化します。(PC版のみ)
同コメントにいいね!投票は連続投稿出来ません。(別コメントには一回ずつ出来ます)また、投票の取り消しは出来ませんのでご留意下さい。

コメント本文