请解析这个程序

来源:百度知道 编辑:UC知道 时间:2024/06/05 00:39:31
void main()
{
char *b="abcd",**c=&b;
b++;
printf("%c",**c);
}

输出结果为:
b

原因:
char *b="abcd",**c=&b; //初始化时,将二维指针c指向指针b所指向的地址,也就是地符串"abcd"的首地址(地符'a'的地址)
b++; //将指针b偏移一位,指向它的后一个地址(也就是字符'b'的地址)
printf("%c",**c); //输出c的内容,由于c是指向指针b所指向的地址的,而在上一句,已经将b指向了字符'b'的地址,所以最后输出'b'

结果是 b

分析
char *b="abcd"
此时变量 b 里存放的是 字符串 "abcd"的首地址
char **c=&b 此时 双重指针变量 c 里存放的是 变量b的地址
b++ 此时 b 里地址会自动加1 所以b 里存放的不再是首地址,而是第二个字符所对应的地址所以 *b='b';
因为 char **c=&b 这句话建立了 c 和 b 的关系,因此
**c=*b='b'

**c是指向指针的指真。这个程序没有什么特别啊。答案是b

不懂