「C言語/配列とポインタ」の版間の差分

削除された内容 追加された内容
全体を修正
1 行
<pre>
書きかけ
ポインタの用途について加筆が欲しい
</pre>
 
__TOC__
 
== 配列とポインタの基本 ==
配列とポインタには密接な関係がある。
 
添字無しの配列の識別子は、
式の中では、配列は「その先頭要素へメモリアドレスを指すポインタであ」に読み替えられる。
<pre>
「配列の識別子」と「&配列の識別子[0]」は同じ
</pre>
 
また、配列の識別子の関節参照は、
配列また、p[i]は*(p+i)先頭の要素簡便記法である。
<pre>
*配列の識別子[添字]」と「*(配列の識別子[0]+添字)」は同じ
</pre>
 
<ref>前橋和弥著『C言語 ポインタ完全制覇』p.061 平成13年6月25日初版第4刷発行</ref>
 
== 関数の引数として配列を渡す ==
[[C言語/関数#関数の引数として配列を渡す]]を参照せよ。
 
== 1次元配列を指すポインタ ==
次の例のように、
別のポインタに配列のメモリアドレスを代入して、
ポインタ演算によって配列にアクセスすることができる。
 
<source lang=c>
43 行
== 多次元配列を指すポインタ ==
多次元配列を指すポインタを使う時は、
配列の領域がどうメモリ上にどう確保されるか意識する必要がある。
例えば3行4列の2次元配列のy行x列にポインタを使ってアクセスするには、
次のように記述する。
88 行
</source>
 
== ポインタの添字脚注 ==
<references/>
ポインタが配列を指す場合、
ポインタに配列のように添字をつけてアクセスすることができる。
<source lang=c>
//例 ポインタを配列のように用いる。
#include <stdio.h>
 
== 参考文献 ==
int main(void)
*前橋和弥著『C言語 ポインタ完全制覇』平成13年6月25日初版第4刷発行
{
int a[10]={2,3,5,7,11,13,17,19,23,29};
int *pa;
pa=a;
for(int i=0; i<10; ++i)
printf("%d ", pa[i]);
}
</source>
 
== ポインタの配列 ==
ポインタは、配列にすることができる。
ポインタを配列にするには、
ポインタの識別子の後に、
次元の数だけ[添字]を追加する。
<source lang=c>
//例 ポインタの配列の使用例
int main(void)
{
int a=1, b=2, c=3;
int *p[3];//3つの要素を持ったポインタの配列pを宣言する。
p[0]=&a;//aのメモリアドレスをポインタの配列pの0番目の要素に代入する。
p[1]=&b;
p[2]=&c;
printf("a=%d b=%d c=%d", *p[0], *p[1], *p[2]);//ポインタの配列pを用いて、a,b,cの値を表示する。
}
</source>
 
[[Category:C言語|はいれつとほいんた]]