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

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:21:44
我在网上看到这么一个例子,但是不太懂,希望各位高手指点

/* What day of the week is July 4, 2001? */
#include <iostream>
#include <time.h>

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 c

const char * a 意思是a指向位置的内容是const的。 char* const a 意思是a是const的, 也就是说a指向的位置是固定的。 所以
const char* const a 就是说, a的位置和a指向的内容都是固定的

8个元素的什么数组? 8个元素的字符串数组跟这个有什么差别? 几乎是一回事

第一个const 是不能写数组的值
第二个是不能写指针的值

这样看看是不是好理解些
static const char (*const wday[])

外面的const 表示*wday[]是const类型,里面的const是指wday[]是const类型。

类似例子

const int * const p;
区分下面几种情况

const int a;同int const a;
const int *p;同 int const *p; 同(int const) *p;
int * const p,同(int *)const p;

类似的还有二级指针,形式上更复杂一些,不过原理是一样的。
按const 修饰符的结合性来理解。