这个程序使用一个指针遍历每个数组中的元素。每个元素被废弃的开关的表达,如果元素是一个元音,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);