2次元配列が関数パラメータである場合の2つの言葉の違いは何ですか?2次元配列が関数パラメータである場合の2つの言葉の違いは何ですか?
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
void dfs(int (*a)[10]){
for(int i=0;i<5;i++){
for(int j=0;j<10;j++){
cout<<a[i][j]<<" ";
}
}
}
void dfs2(int a[][10]){
for(int i=0;i<5;i++){
for(int j=0;j<10;j++){
cout<<a[i][j]<<" ";
}
}
}
int main(){
int (*a)[10]=new int[5][10];
for(int i=0;i<5;i++){
for(int j=0;j<10;j++){
a[i][j]=i*j;
}
}
dfs(a);
dfs2(a);
delete []a;
return 0;
}
dfs(int (*a)[10])
とdfs2(int a[][10])
すべてが動作することができ、私は時に配列が非常に大きいかを知りたい、それが効率的でしょうか?
ありがとうございました。言い換えれば、私のコードはメモリリークを引き起こす可能性があります..... – guanjun
多次元の行列を連続させることに利点があります。しかし、 'std :: array'の' std :: array'は、すべての頭痛のない生の配列と同様にそれを行います。 – aschepler
@guanjun:メモリリークの原因について何も言わなかった。しかし、生の動的に割り当てられた配列が簡単にメモリリークを引き起こす可能性があると言ったときは正しいでしょう。これは、あなたがそれらを避けたい理由の一つです。 –