C-ポインタを切り替えることによって2つの2D配列を交換する

セーシェル

2D配列を含む2つの変数を交換したいと思います。これは、ポインタを交換するだけで簡単に実行できると思います。このコードを試しましたが、機能せず、理由がわかりません。おそらく、ポインターを正しく理解していないのでしょう。

#include <stdio.h>

void swap(int ***a, int ***b) {
    int ** temp = *a;
    *a = *b;
    *b = temp;
}

int main(void) {
    int a[10][10];
    int b[10][10];

    a[1][5] = 4;
    b[1][5] = 2;

    printf("%d, %d\n", a[1][5], b[1][5]);

    swap(&b, &a);

    printf("%d, %d\n", a[1][5], b[1][5]);
    return 0;
}

この出力

4, 2
4, 2

私はそれが出力することを期待します

4, 2
2, 4

だから、私は何が間違っているのですか?

MikeCAT

abmain機能ポインタが、配列ではありません。ポインタを使用する場合は、ポインタを使用してください。

#include <stdio.h>

#define N 10

void swap(int (**a)[N][N], int (**b)[N][N]) {
    int (*temp)[N][N] = *a;
    *a = *b;
    *b = temp;
}

int main(void) {
    int a[N][N];
    int b[N][N];
    int (*pa)[N][N] = &a;
    int (*pb)[N][N] = &b;

    (*pa)[1][5] = 4;
    (*pb)[1][5] = 2;

    printf("%d, %d\n", (*pa)[1][5], (*pb)[1][5]);

    swap(&pb, &pa);

    printf("%d, %d\n", (*pa)[1][5], (*pb)[1][5]);
    return 0;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2D配列の文字列を交換するC(ポインターなし)

分類Dev

Cで2D配列(ポインターからポインター)を交換する

分類Dev

列要素を個別に交換する(2D配列)C ++

分類Dev

ポインタの2D配列をC ++のメンバー変数として初期化する

分類Dev

c ++ 2Dポイントを時計回りに並べ替える

分類Dev

c ++ 2Dポイントを時計回りに並べ替える

分類Dev

C ++で動的2D配列を宣言するときに、ポインターへのポインターを使用するのはなぜですか?

分類Dev

Cのポインタを介して渡される2D配列

分類Dev

Cで(異なる長さの文字列への)ポインタの配列内の2つの要素を交換する

分類Dev

std :: sortを使用してCスタイルの2D配列を部分的に並べ替えます

分類Dev

Cの2D配列のmallocとcallocの後にNULLポインターをチェックする必要がありますか?

分類Dev

C ++ 2D配列へのポインタを宣言する方法

分類Dev

C ++で動的2D配列へのポインタを初期化する方法

分類Dev

C ++の2D配列を持つポインター

分類Dev

C#:配列を別の配列に割り当てます:コピーまたはポインター交換?

分類Dev

Objective-Cで2つの要素を交換できる配列を並べ替える方法

分類Dev

ポインタの2D配列へのポインタを作成するにはどうすればよいですか-C

分類Dev

.csvファイルからデータを読み取ってcの2D配列に追加する

分類Dev

Cの配列名とポインタによる2D配列要素へのアクセス

分類Dev

Cで2つの配列を交換する

分類Dev

動的に割り当てられた2D配列をCの最初の列で並べ替えます

分類Dev

C ++のnewを使用して、1つのポインターのみで動的2D配列をクエリする方法

分類Dev

ポインタでcの配列の長さを数えると、答えは間違っています

分類Dev

CとC ++の関数に配列へのポインタを渡す2つの異なる結果?

分類Dev

ポインタc ++を使用して構造体の配列内の要素を交換する

分類Dev

C:qsortを使用して2D配列を行ごとに並べ替える

分類Dev

データを失うことなく2つのページを切り替える方法:WPF、C#

分類Dev

C ++ 2D配列の行と列を置き換える方法は?

分類Dev

2D配列ポインタをC ++の関数に渡す

Related 関連記事

  1. 1

    2D配列の文字列を交換するC(ポインターなし)

  2. 2

    Cで2D配列(ポインターからポインター)を交換する

  3. 3

    列要素を個別に交換する(2D配列)C ++

  4. 4

    ポインタの2D配列をC ++のメンバー変数として初期化する

  5. 5

    c ++ 2Dポイントを時計回りに並べ替える

  6. 6

    c ++ 2Dポイントを時計回りに並べ替える

  7. 7

    C ++で動的2D配列を宣言するときに、ポインターへのポインターを使用するのはなぜですか?

  8. 8

    Cのポインタを介して渡される2D配列

  9. 9

    Cで(異なる長さの文字列への)ポインタの配列内の2つの要素を交換する

  10. 10

    std :: sortを使用してCスタイルの2D配列を部分的に並べ替えます

  11. 11

    Cの2D配列のmallocとcallocの後にNULLポインターをチェックする必要がありますか?

  12. 12

    C ++ 2D配列へのポインタを宣言する方法

  13. 13

    C ++で動的2D配列へのポインタを初期化する方法

  14. 14

    C ++の2D配列を持つポインター

  15. 15

    C#:配列を別の配列に割り当てます:コピーまたはポインター交換?

  16. 16

    Objective-Cで2つの要素を交換できる配列を並べ替える方法

  17. 17

    ポインタの2D配列へのポインタを作成するにはどうすればよいですか-C

  18. 18

    .csvファイルからデータを読み取ってcの2D配列に追加する

  19. 19

    Cの配列名とポインタによる2D配列要素へのアクセス

  20. 20

    Cで2つの配列を交換する

  21. 21

    動的に割り当てられた2D配列をCの最初の列で並べ替えます

  22. 22

    C ++のnewを使用して、1つのポインターのみで動的2D配列をクエリする方法

  23. 23

    ポインタでcの配列の長さを数えると、答えは間違っています

  24. 24

    CとC ++の関数に配列へのポインタを渡す2つの異なる結果?

  25. 25

    ポインタc ++を使用して構造体の配列内の要素を交換する

  26. 26

    C:qsortを使用して2D配列を行ごとに並べ替える

  27. 27

    データを失うことなく2つのページを切り替える方法:WPF、C#

  28. 28

    C ++ 2D配列の行と列を置き換える方法は?

  29. 29

    2D配列ポインタをC ++の関数に渡す

ホットタグ

アーカイブ