1. 一维数组元素的引用:
[问题回顾] 使用指针和计数变量实现对数组元素的遍历访问.
void Show(char S[], short N)
{
short i = 0;
char *p = S;/* p指向数组S的首地址 */
while(i < N)
{
printf("%c", *(p + i));
i ++;
}
putchar('\n');
}
[问题]经过实践验证, *(p + i) 等价于 *(p + i * sizeof(char)), 说到这里相信有不少朋友会问, 如果将指针p的基类型改为其他类型(如short、int等), 这个关系式还成立吗?
void Show(char S[], short N)
{
short i = 0;
char *p = S;/* p指向数组S的首地址 */
while(i < N)
{
printf("%c", *(p + i * sizeof(char)));
i ++;
}
putchar('\n');
}
为了验证该问题, 重新设计程序.
#include<stdio.h>
#define MaxSize 10
void Init(short [], short);
void Show(short [], short);
int main()
{
short X[MaxSize];
Init(X, MaxSize);
Show(X, MaxSize);
}
/* 初始化short数组M, N为数组长度 */
void Init(short M[], short N)
{
/* 以已经证实正确的数组访问方法, 对数组M进行初始化 */
short i = 0;
while(i < N)
{
scanf("%hd", M + i);
i ++;
}
}
/* */