C++求助:一个看不太懂的声明

[复制链接]
查看11 | 回复3 | 2009-6-14 19:44:02 | 显示全部楼层 |阅读模式
我在网上看到这么一个例子,但是不太懂,希望各位高手指点
/* What day of the week is July 4, 2001? */
#include
#include
int main(void) {

static const char *const wday[] = {

"Sunday", "Monday", "Tuesday", "Wednesday",

"Thursday", "Friday", "Saturday", "-unknown-"
};

struct tm time_str;

time_str.tm_year = 2001 - 1900;

time_str.tm_mon = 7 - 1;

time_str.tm_mday = 4;

time_str.tm_hour = 0;

time_str.tm_min = 0;

time_str.tm_sec = 1;

time_str.tm_isdst = -1;

if ( mktime(&time_str) == (time_t)(-1) )

time_str.tm_wday = 7;

printf("%s\n", wday[time_str.tm_wday]);



system("PAUSE");

return 0;
}
我的问题是:
1. "static const char *const wday[]" 这个定义是什么意思?我的理解是“static const char *”的意思是一个静态的常量指针,但是后面的一个const又是什么意思呢?
2. 这里定义的是一个数组,数组中包含8个字符串,为什么不直接定义一个有8个元素的数组呢,却要这样定义?有什么好处?
先谢谢各位高手了!

回复

使用道具 举报

千问 | 2009-6-14 19:44:02 | 显示全部楼层
const char * a意思是a指向位置的内容是const的。char* const a 意思是a是const的, 也就是说a指向的位置是固定的。 所以const char* const a 就是说, a的位置和a指向的内容都是固定的8个元素的什么数组? 8个元素的字符串数组跟这个有什么差别?几乎是一回事...
回复

使用道具 举报

千问 | 2009-6-14 19:44:02 | 显示全部楼层
这样看看是不是好理解些static const char (*const wday[])外面的const 表示*wday[]是const类型,里面的const是指wday[]是const类型。类似例子const int * const p;区分下面几种情况const int a;同int const a;const...
回复

使用道具 举报

千问 | 2009-6-14 19:44:02 | 显示全部楼层
第一个const 是不能写数组的值第二个是不能写指针的值...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行