在C ++参考书中,我找到了一个访问如下字符串的示例:
void main()
{
char *str = "Test";
int len, i;
clrscr();
len = strlen(str);
for(i=0 ; i<len ; i++)
{
printf("%c", i[str]);
}
getch();
}
为什么i[str]
有效? i
是变量,而不是数组。
如果字符串声明为str[]
而不是*str
,它也可以。
答案 0 :(得分:0)
它有效,因为在C i[str]
和str[i]
中是等价的
答案 1 :(得分:0)
i[str]
和str[i]
评估方式相同(*(str+i)
)
当您声明str[]
时,str
是指向数组第一个元素的指针
答案 2 :(得分:0)
Char指针指向字符串开头的内存位置,数组索引(例如str[i]
)基本上是将i
次迭代添加到字符串的开头。
所以,str + i
= str[i]
= i[str]
= i + str
在printf
内使用此功能,就像您所做的那样,所有这些都会评估相同的内容:
printf("%c", str[i]);
printf("%c", i[str]);
printf("%c", *(str+i));
printf("%c", *(i+str));