zはint[5]型
yはint*[5]型
&zはint(*)[5]型
&yはint*(*)[5]型
全部型が違います。
やるなら、
void Set(int x[][5]);
もしくは
void Set(int (*x)[5]);
として
int main(){
int z[5] = {0,1,2,3,4};
int (*y)[5];
y = &z;
Set(y);
}
void Set(int x[][5]){
}
または
void Set(int (*x)[5])
{}
int**でもいけますが、型が違うので警告が出ますし
環境によってはコンパイルエラーになるでしょう。
訂正です。。。
すみません。。。
zを2次元配列だと思ってたorz
質問者さんの意図はタブンこでれですね。。。
void Set(int **);
int main(){
int z[5] = {0,1,2,3,4};
int *y;
y = z;
Set(&y);
}
void Set(int **x){
}
普通は以下のように配列の個数を引数に持たせてあげると、5個までの配列でなくても渡すことができます
void Set(int *, int );
int main(){
int z[5] = {0,1,2,3,4};
Set(z,sizeof(z));
}
void Set(int *x, int c){
}
#普通にやるなら一番下のヤツだと思うので一応
#順番も訂正しておきました。