我创建了一个常量指针数组,如下所示:
const char* const sessionList[] = {
dataTable0,
dataTable1,
dataTable2,
dataTable3
};
非常规的非常量指针数组语法是什么?我以为应该是 const char**
,但编译器不这样认为。
const char* const (*ptr)[4] = &sessionList;
const char* const sessionList[] = { ... };
更好的写法是:
char const* const sessionList[] = { ... };
sessionList[0]
的类型是char const* const
。
因此,&sessionList[0]
的类型是char const* const*
。
您可以使用:
char const* const* ptr = &sessionList[0];
或者
char const* const* ptr = sessionList;
这声明了一个指向sessionList
元素的指针。如果你想声明指向整个数组的指针,它应该是:
char const* const (*ptr)[4] = &sessionList;
*
:const char* const *
const char * *
等同于你的数组,因为当传递到函数时,这就是你的数组将会衰变成的形式。你需要额外的间接引用来获取指向数组的指针。或者像const char * [] *
这样的东西,但我不确定它是否有效。 - KABoissonneault&sessionList
的类型是const char * const (*)[4]
,但我很难声明一个这样类型的变量。 - KABoissonneaultsizeof
,decltype
和&
),它会衰变为const char * const *
。 - Chris Doddconst
。 - KABoissonneault