次のコードがあります。
const int N=3;
static double * p[N];
p は、N 次元 double 配列を指す静的ポインター、または各要素が静的ポインターを表す N 次元配列を表しますか?
また、次の変更がコンパイルに失敗したことがわかりましたが、その理由はわかりません...
int N=3;
static double * p[N];
p は、N 次元 double 配列を指す静的ポインターを表しますか、それとも各要素が静的ポインターを表す N 次元配列を表しますか?
ほぼ 2 番目の選択肢は、各要素が静的ポインターを表す N サイズの配列です。「N 次元」から「N サイズ」への変更に注意してください。ありがとう@デビッド。
また、次の変更がコンパイルに失敗したことがわかりましたが、その理由はわかりません...
配列のサイズには、定数の整数が必要です。N
のサイズの「constness」を削除した後はp
、コンパイル時に不確実です。
p
sへの 3 つのポインターの静的配列ですdouble
。
コンパイラでは、コンパイル時に配列のサイズがわかっている必要があります。これが、配列サイズの宣言にa のみを使用できconst int
、 anを使用できない理由です。int
cdecl> explain static double *p[10];
declare p as static array 10 of pointer to double
その種のヘルプをオンラインで入手できる cdecl.org もあります。