所以我现在正在尝试学习 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。
我得到两个错误;一个是在线的
指针移位(&a1, 3)
我从不兼容的指针类型传递参数 1。另一个错误是无法理解的,但我希望问题足够明显,以便有人能够帮助我。那么......如何在我的主要功能中测试我的两个功能?
谢谢!