#include<stdio.h>
void main()
{
char ***p="hello";
printf("%c",++*p++);
}
我不明白为什么(*)间接运算符在这里使用三次。用“C”写下面代码的输出是什么?
当我编译这个程序,然后输出是“j”。 但实际上听到p是指向指向字符数组的指针的指针。 那么为什么我得到的输出为j。 我不明白这背后的逻辑是什么。 请帮我理解这背后的实际逻辑。
而且混乱增加更多的时候我只用一个间接运营商并得到遵守的程序。然后,输出I .means
void main()
{
char *p="hello";
printf("%c",++*p++);
}
只是想让你知道'void main'不是C:http://stroustrup.com/bs_faq2.html#void-main – chris 2012-07-23 16:49:45
它是未定义的行为。 [任何人都可以解释这些未定义的行为(i = i ++ + ++ i,i = i ++等...)](http://stackoverflow.com/questions/949433/could-anyone-explain-these-undefined-behavior -iiiii等) – pmr 2012-07-23 16:50:27
它看起来像依赖于所有未定义的行为。 – Wug 2012-07-23 16:50:56