【发布时间】:2015-11-18 10:08:20
【问题描述】:
通过加速 C++ 工作。有一个例子,我有很多不明白的地方。
double grade = 88;
static const double numbers[] = { 97,94,90,87,84,80,77,74,70,60,0 };
static const char* const letters[] = { "A+","A","A-","B+","B","B-","C+","C","C-","D","F" };
static const size_t ngrades = sizeof(numbers) / sizeof(*numbers);
for (size_t i = 0;i < ngrades;++i) {
if (grade >= numbers[i]) {
cout << letters[i];
break;
}
}
- 我不明白
static const char* const letters[] = (...)发生了什么。首先,我一直认为 char 是由 ' 分隔的单个字符。由 " 分隔的单个或多个字符对我来说是一个字符串。 - 我理解指针的方式是,它们是表示对象地址的值,尽管它会被初始化为
int* p=&x;。它们的优点是能够像迭代器(某种)一样使用。但我真的不明白这里发生了什么,我们声明了一个指针字母,它被分配给它一个值数组(不是地址),这是什么意思?这样做的原因是什么? - 我知道java中的static是什么意思,CPP中的意思类似吗?作者写道,这意味着编译器只会初始化一次静态值。但这不是对特定范围内的每个变量都完成的吗?我在调试中注意到我似乎在第一次执行后跳过了这些值。但这意味着即使在我的程序完成运行后这些静态值仍然保存?这对我来说似乎不合逻辑。
【问题讨论】: