工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

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); を使用した関数 .

ポインター n1n2 関数定義でこれらの引数を受け入れます。

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言語

  1. C# のキーワードと識別子
  2. C# のビット単位およびビット シフト演算子
  3. C# クラスとオブジェクト
  4. C# の抽象クラスとメソッド
  5. C# 部分クラスと部分メソッド
  6. C# の封印されたクラスとメソッド
  7. C の関数に配列を渡す
  8. C ポインタ
  9. 配列とポインタの関係
  10. C 構造体とポインター
  11. C - 定数とリテラル