■ このスレッドは過去ログ倉庫に格納されています
C言語初心者なんだけど配列のポインタに詳しい人ちょっと来て
- 1 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:20:38.784 ID:LTnaWuPQ0NIKU.net
- C言語初心者なんだけどポインタに詳しい人ちょっと来て
https://hebi.5ch.net/test/read.cgi/news4vip/1511860420/
昨日↑のスレで色々教えてもらったことをもっと詳しく調べて
自分の中のイメージを図にしてみたんだけど、
配列のポインタの関係ってこういう理解で合ってる?
https://i.imgur.com/Cunu6hB.png
- 2 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:21:45.680 ID:Ob9AvHF+6NIKU.net
- 配列のポインタなのかポインタの配列なのか。
- 3 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:23:56.835 ID:KJoltJKj0NIKU.net
- 型と変数混在してるんじゃないのこれ
- 4 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:24:17.806 ID:LTnaWuPQ0NIKU.net
- >>2
配列へのポインタと配列の先頭要素へのポインタ?
- 5 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:24:24.131 ID:KaQgLMGN0NIKU.net
- &strについていろいろ間違ってる希ガス
- 6 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:25:27.126 ID:LTnaWuPQ0NIKU.net
- >>5
具体的に頼んます
- 7 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:28:34.669 ID:KJoltJKj0NIKU.net
- charで定義したstr[5]に意味があるとしたらchar型の配列strの6番目ってだけで
値でいうならここでは範囲外の1005のchar文字になるが
定義の際の記述と使うときのアクセス方法を混同してるんじゃないか
- 8 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:29:20.579 ID:svWUewK10NIKU.net
- ポインタ分からんとかいう奴はPICアセンブラでもやってみるといい
メモリマップ上のどこに何置くか全部手動で決める経験すると「あ〜ポインタって楽だわ〜」ってなるから
- 9 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:31:25.913 ID:KaQgLMGN0NIKU.net
- >>6
ここが&str
- 10 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:32:40.175 ID:LTnaWuPQ0NIKU.net
- >>7
それは&strについて?
>>9
昨日まではそう思ってたけど配列の場合はどうやら違うみたいなんだ
ちょっと簡単なコード書いてくる
- 11 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:36:35.581 ID:Ob9AvHF+6NIKU.net
- 配列=ポインタ な。
- 12 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:37:34.241 ID:KaQgLMGN0NIKU.net
- >>10
ほんとだ試してみたらstrと&str同じ値になってる・・・
うそでしょ知らなかった
- 13 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:38:43.871 ID:57uH/ZmTMNIKU.net
- ググって1段目
http://www9.plala.or.jp/sgwr-t/c/sec10-2.html
- 14 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:40:10.388 ID:Ob9AvHF+6NIKU.net
- >>12
strがポインタだから&strはポインタのポインタじゃないんか。謎だな。
- 15 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:40:57.732 ID:jAQgPjdV0NIKU.net
- &はアドレス
はじめたころの俺はそう覚えた
- 16 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:41:24.595 ID:KJoltJKj0NIKU.net
- あーわかったstrをchar[5]として確保したら
&str+1はchar[5]分の型みたいに5char分シフトするんじゃないの?って事か
C言語自体にはそういう機能無いよ
- 17 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:43:32.309 ID:LTnaWuPQ0NIKU.net
- >>12
そうなんだよ
つまりstrってのはポインタ変数ではなくて
strって書くとstrの先頭要素のアドレス、つまりstr[0]のポインタが返ってきて
&strって書くとchar型配列自体?という表現が正しいのかわからないけど
そのポインタが返ってくるみたいなんだ
- 18 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:46:01.536 ID:KJoltJKj0NIKU.net
- ん?俺も何か勘違いしてるかもしれないな
- 19 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:47:56.296 ID:0IBb7Mbz0NIKU.net
- &var
var
*var
ちゃんと理解してねえだろ
- 20 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:48:39.659 ID:dKzsn06r0NIKU.net
- なんていうか
そういう頭で理解するのやめたほうがいいように思う
結局ポインタが使えればいいだけなんだよ
void func(int *p){
*p = 10;
}
void main(){
int aaa;
func(&aaa);
prinf("aaa:%d",aaa);//10
}
これが実際に使えて理解できてるだけでいい
- 21 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:50:42.038 ID:Ob9AvHF+6NIKU.net
- >>20
arr==&arrになる現象について説明頼む
- 22 :以下、5ちゃんねるからVIPがお送りします:2017/11/29(水) 17:50:45.643 ID:SEhtRPObaNIKU.net
- 配列は変数ではないということだよ
0x1000[2]
みたいなコードが許されるの知ってるだろうけど、
char str[5];
で定義して
str[2]
で変数たどるのもこれと基本は同じ
総レス数 22
6 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200