int i,*ip;
main()
{
i=5;
ip=&i;
*ip=&ip,printf("%d",i);
}
为什么这段代码“打印”什么?它实际上工作,并没有给出错误。 编辑:实际上这个代码打印的东西像635435,我认为,可能是ip的地址,但当ı使用-pedantic-errors标志这给我一个错误,所以我应该怎么说代码?这会输出ip的地址或出错。
答案 0 :(得分:0)
语句*ip=&ip
不正确,因为首先执行了*ip
,5
表示5
,而address of ip
已被ip = (int*)&ip;/* need to typecast as you are assigning address of pointer
to pointer variable which is not advisable */
取代。它应该是
int i,*ip;
int main(void) { /* side note use int main() instead of just main() */
i=5;
ip=&i;
ip=(int*)&ip,printf("%d\n",i);
return 0;
}
您的代码看起来像
int main(void)
另外使用main()
代替int main(void) { /* ... */ }
,如C规范所述
应使用返回类型int定义并且不带参数:
int main(int argc, char *argv[]) { /* ... */ }
或有两个参数(这里称为argc和argv,虽然可以使用任何名称,因为它们是本地的 到它们被声明的函数):
SELECT task.titolo, risposte.valore FROM task INNER JOIN risposte ON task.Id = risposte.id_task WHERE task.ID_campagna=1 AND task.stato = 1 AND task.risultato = risposte.id