这个程序使用一个指针遍历每个数组中的元素。每个元素被废弃的开关的表达,如果元素是一个元音,nvowels递增。for循环再用++运算符移动指针指向数组中的下一个字符。for循环终止时,所有的角色都被检查。
上面的程序产生的结果:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
const
int
nArraySize = 7;char
szName[nArraySize] = "Mollie";int
nVowels = 0;for
(char
*pnPtr = szName; pnPtr < szName + nArraySize; pnPtr++){ switch
(*pnPtr) { case
'A': case
'a': case
'E': case
'e': case
'I': case
'i': case
'O': case
'o': case
'U': case
'u': nVowels++; break; }}cout
<< szName << "
has "
<< nVowels << "
vowels"
<< endl; |
作者的文章就在一些点和错误的人。然而,我发现他的逻辑和例子是相当误导的。而不是反驳他的论点,相反的,让我看看能不能对形势的一些启发,我明白。
数组和指针不严格相同。虽然使用了指针数组,数组也包含更多信息。当你创建一个数组,编译器必须跟上数组有多少个元素。否则,编译器知道删除多少个元素时,删除[]数组不。
与非动态分配的数组,看到数组的实际大小,它是可能的:
int anArray[5]; cout < < sizeof(anArray);

被折叠的 条评论
为什么被折叠?



