だから私は今Cを学ぼうとしています.2つの関数があります.1つは配列内の要素をシフトします.
void shift(int a[], int n) {
int i;
for(i = 0; i != n-1; i++){
a[i] = a[i+1];
}
}
およびポインターベースを除く、同じ関数のバージョン:
void pointer_shift(int *a[], int n) {
int i;
for (i = 0; i != n - 1; i++) {
*a[i] = *a[i + 1];
}
}
ポインターベースのバージョンが正しいかどうかはわかりませんが、最も重要な質問は、両方/どちらかが機能することを実際にテストする方法だと思います。これら 2 つの関数の定義に加えて、次のものがあります。
#include <stdio.h>
void shift(int a[], int n);
void pointer_shift(int *a[], int n);
int main(void) {
printf("Begin execution of testing Problem 1\n");
int a1[] = {100, 101, 102};
int i;
for(i = 0; i<3;i++)
printf("Before Shift: " "%d\n", a1[i]);
//shift(a1, 3);
pointer_shift(&a1, 3);
for(i = 0; i<3;i++)
printf("After Shift In Main: " "%d\n", a1[i]);
return 0;
}
シフト(a1, 3)
正常に動作しますが、私は一生、pointer_shift を正しくテストする方法を理解できません。
2 つのエラーが発生します。1つはその行にあります
pointer_shift(&a1, 3)
互換性のないポインター型から引数 1 を渡しています。他のエラーは判読できませんが、誰かが私を助けることができるほど問題が明らかであることを望んでいました. だから...私のメインで私の2つの機能をテストする方法は?
ありがとう!