我在面试中被问过下面的代码是否包含任何错误?这个程序会给出任何错误(运行时错误)吗?
main()
{
int a;
int **p=&a;
}
我说它不会有任何错误,但会影响程序的输出。你们怎么看?
我在面试中被问过下面的代码是否包含任何错误?这个程序会给出任何错误(运行时错误)吗?
main()
{
int a;
int **p=&a;
}
我说它不会有任何错误,但会影响程序的输出。你们怎么看?
这是错误的。我也建议添加一些空白附近= &
我正确地阅读该答案吗? Whitespace..really? –
当你说这是错误的,那么你也应该说什么是错的。 – Nobody
好吧,因为它闻起来像家庭作业(是的,它被贴上面试问题)。在这个片段中有太多的错误,所以面试的唯一答案就是把他们总结起来。空白是为了防止可能将=&as&=视为较旧的编译器。在没有返回语句的情况下删除main(),并且根据“int如果没有指定”也指向pre-ANSI-C。 – wildplasser
此代码没有任何编译时或运行时的错误,因为它什么都不做! 但一般来说,它有一个问题。 p是int **类型的变量,但& a是int *。以这种方式编码可能最终会出现错误,特别是语义错误。
如果你真想把一个INT *在INT **,铸造做到这一点。像这样:
int **p= (int**) &a;
什么,当你尝试偏偏运行呢? – geoffspear
程序未* *做什么... –
它不给任何错误 –