C パスのアドレスとポインター
C パスのアドレスとポインタ
このチュートリアルでは、例を使用してアドレスとポインターを引数として関数に渡す方法を学習します。
C プログラミングでは、アドレスを引数として関数に渡すこともできます。
関数定義でこれらのアドレスを受け入れるには、ポインターを使用できます。これは、ポインタを使用してアドレスを格納するためです。例を見てみましょう:
例:アドレスを関数に渡す
#include <stdio.h>
void swap(int *n1, int *n2);
int main()
{
int num1 = 5, num2 = 10;
// address of num1 and num2 is passed
swap( &num1, &num2);
printf("num1 = %d\n", num1);
printf("num2 = %d", num2);
return 0;
}
void swap(int* n1, int* n2)
{
int temp;
temp = *n1;
*n1 = *n2;
*n2 = temp;
}
プログラムを実行すると、出力は次のようになります:
num1 = 10 num2 = 5
num1 のアドレス そして num2 swap()
に渡されます swap(&num1, &num2);
を使用した関数 .
ポインター n1 と n2 関数定義でこれらの引数を受け入れます。
void swap(int* n1, int* n2) {
... ..
}
*n1 の場合 および *n2 swap()
内で変更されます 関数、num1 そして num2 main() 内 関数も変更されます。
swap()
の内部 関数、*n1
および *n2
交換しました。したがって、num1 そして num2 も交換されます。
swap()
に注意してください 何も返していません。その戻り型は void
です .
例 2:関数へのポインタの受け渡し
#include <stdio.h>
void addOne(int* ptr) {
(*ptr)++; // adding 1 to *ptr
}
int main()
{
int* p, i = 10;
p = &i;
addOne(p);
printf("%d", *p); // 11
return 0;
}
ここで、p に格納されている値 、 *p
、最初は 10 です。
次に、ポインタ p を渡しました addOne()
に 関数。 ptr ポインタは addOne()
でこのアドレスを取得します 関数。
関数内で、ptr に格納されている値を増やしました (*ptr)++;
を使用して 1 ずつ . ptr以来 と p ポインタは両方とも同じアドレス *p
を持っています main()
内 も 11 です。
C言語