ポインタノート
ポインタ:コンピュータのメモリアドレスを格納する変数です.
ポインタ値:ポインタが指すメモリからデータを読み出す
オペレータ*:ポインタ変数を宣言したり、ポインタの値として使用したりできます.変数を宣言するときに使用される場合、*はポインタを宣言したことを示します.その他の場合は*でポインタの値を表します.
アドレスオペレータ&:メモリアドレスを参照します.変数名の前に&オペレータを使用すると、その変数のメモリアドレスが得られます.
ポインタ変数に値を割り当てるときは、次の点に注意してください.
(1)ポインタ変数にはアドレスしか格納できません.int*ipPointer=10のようなポインタ変数に値を割り当てないでください.コンパイルでエラーが発生します.(2)ポインタ変数に割り当てられた変数アドレスタイプは、ポインタ変数を定義するタイプと一致します.
関数パラメータとしてポインタ変数:
(1)ある変数のアドレスを別の関数パラメータに渡す役割(2)関数パラメータがポインタである場合、関数実パラメータは変数を指すポインタであるか、変数のアドレスであるかのいずれかである.
ポインタと配列
C言語では、配列名は配列内のヘッダ要素のアドレスを表します.
ポイント=arrayはpoint=array[0]と等価である.
ポインタと多次元配列
Cプログラムでは、2つの方法で1つの文字列にアクセスできます.
(1)文字配列で1文字列を格納する
(2)文字ポインタで文字列を指す
ポインタ値:ポインタが指すメモリからデータを読み出す
オペレータ*:ポインタ変数を宣言したり、ポインタの値として使用したりできます.変数を宣言するときに使用される場合、*はポインタを宣言したことを示します.その他の場合は*でポインタの値を表します.
アドレスオペレータ&:メモリアドレスを参照します.変数名の前に&オペレータを使用すると、その変数のメモリアドレスが得られます.
// int
int * p;
// int
int val = 20;
// int
p = & val;
//
int i = *p;
printf("%d
",i);
ポインタ変数に値を割り当てるときは、次の点に注意してください.
(1)ポインタ変数にはアドレスしか格納できません.int*ipPointer=10のようなポインタ変数に値を割り当てないでください.コンパイルでエラーが発生します.(2)ポインタ変数に割り当てられた変数アドレスタイプは、ポインタ変数を定義するタイプと一致します.
int iValue = 5;
float *ipPointer;
ipPointer = &iValue;// 。 ,
関数パラメータとしてポインタ変数:
(1)ある変数のアドレスを別の関数パラメータに渡す役割(2)関数パラメータがポインタである場合、関数実パラメータは変数を指すポインタであるか、変数のアドレスであるかのいずれかである.
void F(int *pointer1, int *pointer2)
{
...
}
1)F(&A,&B);
2)
int * P, *Q;
int p = 1,q = 2;
P = &p;
Q = &q;
F(P,Q);//F(p,q)
ポインタと配列
C言語では、配列名は配列内のヘッダ要素のアドレスを表します.
int array[100];
int *point;
point = array;
point = array[0];
ポイント=arrayはpoint=array[0]と等価である.
ポインタと多次元配列
#include <stdio.h>
int main()
{
int a[3][4] =
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int *p = NULL;
p = a;
printf("a=%d
",*p);
p = a[0];
printf("a[0]=%d
",*p);
p = &a[0];
printf("&a[0]=%d
",*p);
p = &a[0][0];
printf("&a[0][0]=%d
",*p);
p = a[1];
printf("a[1]=%d
",*p);
p = a[2];
printf("a[2]=%d
",*p);
p = &a[0]+1;
printf("&a[0]+1=%d
",*p);
p = a[0]+1;
printf("a[0]+1=%d
",*p);
printf("&a[0]+1=%d
",&a[0]+1);
printf("a[0]+1=%d
",a[0]+1);
p = a+1;
printf("a+1=%d
",*p);
return 0;
}
Cプログラムでは、2つの方法で1つの文字列にアクセスできます.
(1)文字配列で1文字列を格納する
(2)文字ポインタで文字列を指す
#include <stdio.h>
int main()
{
char str[] = "Hello!";
char *p = "Hi!";
printf("%s
",str);
printf("%s
",p);
return 0;
}