- 注册时间
- 2005-11-2
- 最后登录
- 2022-4-27
⑥精研
....
- 积分
- 1766
|
发表于 2007-7-10 15:27:00
|
显示全部楼层
- -
前面那个是指针数组,就是说,数组里,三个元素都是指针.
当你name[0] = &arr[0]时,就意味着,name[0]这个指针,指向了arr[]这个数组的头.但是,这和name[1]有什么关系呢?name[1]依旧是一个空指针.
此时你获得的结果是name[0] = "ab";
name[1] = NULL;
改成这样,可以获得你所需要的结果,
int i = 0;
char *name[3];char arr[3]={'a','b'};
for (i = 0; i < 3; ++i)
{
name[ i ]=&arr[ i ];
}
printf("%c",*name[0]);
但是注意的是,内容并非你所想象的
你可能存在的想象是name[0] = 'a';
name[1] = 'b';
name[2] = NULL;
实际上是
name[0] = "ab"
name[1] = "b"
name[2] = NULL; (不确定指向何处)
原本一个是char*的指针数组,一个是 char的数组,本身类型就不同.
另外,你可以考虑下这样的结果,你就知道如何得到希望的结果了
int i = 0;
char *name[3];char arr[3]={'a','b'};
for (i = 0; i < 3; ++i)
{
name[ i ]=&arr[ i ];
}
printf("%c",++(*name[0]));
刚才我又发现一个有趣的问题,因为char& arr[0]和&arr[1]都指向同一块静态存储区,结果导致arr[2]也出现了很有规律的变化. |
|