그래서 내가 지금 C를 배우려고 노력하고있어, 나는 두 가지 기능을 가지고 : 배열의 요소를 이동 하나쉬프트 요소 - 포인터 기반
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];
}
}
내가 포인터 기반 버전이 올바른지 아닌지 모르겠지만, 내 가장 중요한 질문은 내가 실제로 있는지 테스트하는데있어 어떻게 생각 둘 다/일하다. 두 함수의 정의 외에도, 내가 가진 :
#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를 올바르게 테스트하십시오.
두 개의 오류가 발생합니다. 하나는 그 라인
pointer_shift (& A1, 3)
I 호환되지 않는 포인터 타입에서 1 인자를 전달하고있다. 다른 오류는 해독 할 수 없지만 누군가가 나를 도울 수있을만큼 문제가 분명하기를 희망했습니다. 그럼 ... 내 두 가지 기능을 테스트하는 방법?
감사합니다.
이 주제는 꺼져 있습니다.하지만 C++ 11을 사용하는 경우 배열에 대한 포인터보다 std :: array를 사용하는 것이 좋습니다. –