2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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