如何將多維數(shù)組傳遞給C和C ++中的函數(shù)#include<stdio.h>void print(int *arr[], int s1, int s2) {
int i, j;
for(i = 0; i<s1; i++)
for(j = 0; j<s2; j++)
printf("%d, ", *((arr+i)+j));}int main() {
int a[4][4] = {{0}};
print(a,4,4);}這適用于C,但不適用于C ++。錯誤:cannot convert `int (*)[4]' to `int**' for argument `1' to
`void print(int**, int, int)'為什么它在C ++中不起作用?需要做出哪些改變?
3 回答

慕姐4208626
TA貢獻1852條經(jīng)驗 獲得超7個贊
#include<stdio.h>void print(int arr[][4], int s1, int s2) { int i, j; printf("\n"); for(i = 0; i<s1; i++) { for(j = 0; j<s2; j++) { printf("%d, ", *((arr+i)+j)); } } printf("\n");}int main() { int a[4][4] = {{0}}; print(a,4,4);}
這將工作,我的工作意味著編譯。@AndreyT解釋了為什么你的版本不能正常工作。
這是你應該傳遞二維數(shù)組的方法。
為清楚起見,您還可以在函數(shù)聲明中指定兩個大小:
#include<stdio.h>void print(int arr[4][4], int s1, int s2) { int i, j; printf("\n"); for(i = 0; i<s1; i++) { for(j = 0; j<s2; j++) { printf("%d, ", *((arr+i)+j)); } } printf("\n");}int main() { int a[4][4] = {{0}}; print(a,4,4);}
兩者都有效。
您還應該更改*((arr+i)+j)
為a[i][j]
(最好)或者*(*(arr+i)+j)
如果您打算訪問j
行的第th個元素i
。
- 3 回答
- 0 關注
- 550 瀏覽
添加回答
舉報
0/150
提交
取消