まずC言語でポインタとは何かというと、文字通り位置決め関数のような構造です。ポインタの最も重要な機能は、コールバック関数を実装することです。いわゆるコールバック関数とは、関数が最初にどこかに登録され、後で必要になったときに呼び出されるという意味です。コールバック関数は通常、メッセージのインターセプト、システム情報の取得、または非同期イベントの処理に使用されます。
#C 言語で関数ポインタに似た関数を実装する方法
Java 言語でポインタの概念はありません。同じ効果を達成するためにインターフェイスとクラスを使用できます。最初にインターフェイスを定義し、次にインターフェイス内で呼び出されるメソッドを宣言してから、このインターフェイスを実装する必要があります (インターフェイスなどのさまざまな関数実装)。 )、最後にこの実装クラスのオブジェクトがパラメータとして呼び出し側プログラムに与えられ、呼び出し側プログラムはこのパラメータを通じて指定された関数を呼び出します。具体的な実装は次のとおりです:
interface IntCompare { public int cmp(int a,int b); } class Cmp1 implements IntCompare { public int cmp(int a,int b) { if(a>b) return 1; else if(a<b) return -1; else return 0; } } class Cmp2 implements IntCompare { public int cmp(int a,int b) { if(a>b) return -1; else if(a<b) return 1; else return 0; } } class HelloWorld { public static void main(String[] args) { int[] array1 = {7,3,19,40,4,7,1}; insertSort(array1,new Cmp1()); System.out.println("升序排列"); for(int i=0;i<array1.length;i++) { System.out.print(array1[i]+" "); } System.out.println(); int[] array2 = {7,3,19,40,4,7,1}; insertSort(array2,new Cmp2()); System.out.println("降序排列"); for(int i =0;i<array2.length;i++) { System.out.print(array2[i]+" "); } } public static void insertSort(int[] a,IntCompare cmp) { if(a!=null) { for(int i=1;i<a.length;i++) { int temp = a[i],j=i; if(cmp.cmp(a[j-1], temp)==1) { while(j>=1&&cmp.cmp(a[j-1],temp)==1) { a[j] = a[j-1]; j--; } } a[j] = temp; } for(int i=1;i<a.length;i++) { int temp = a[i]; int j = i-1; while(j>=0&&cmp.cmp(a[j], temp)==1) { a[j+1] = a[j]; j--; } a[j+1] = temp; } } } }
以上がJavaでポインタの機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。