void main()
{
char *name[] = {"aaa", "bbbb", "ccc", "dd"};
char **p;
int i;
for( i=0; i < 4; i++ )
{
p = name + i;
printf("%s\n", *p);
}
}
p = name + i;这句应该怎么理解,搞了一下午还没明白!求大神指导。
char *name[] = {"aaa", "bbbb", "ccc", "dd"};
name[0]到name[3]是四个指针,分别指向字符串"aaa", "bbbb", "ccc", "dd"
name+i就相当于&name[i],&是取地址运算,本身name[i]是一个指针,&name[i]就是指针的指针了。
所以可以给char **p这个指向指针的指针变量赋值
*(name+i)==*(&name[i])==name[i]
由于p=name+i;
所以:
*p=*(name+i)==name[i];
所以最后输出这四个字符串"aaa", "bbbb", "ccc", "dd"
追问VC++6.0里数组都是指针来处理的吗?
追答确切的处理方法,你只有去问微软。
不过用指针来处理数组,处理数组的速度比用下标法来处理的速度快。
是不是这样?
明白了!!!谢谢!
追答OK
本回答被提问者采纳