所以我想學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)
我傳遞參數1不兼容的指針類型。另一個錯誤是無法解讀的,但我希望問題會很明顯,有人能夠幫助我。所以......如何在我的主要測試我的兩個功能?
謝謝!
這是一個非主題 - 但是當你使用C++ 11時,最好使用指向數組的指針std :: array。 – 2012-09-09 09:19:41