面试问题:
(1)c语言static,const用法
(2)const char *p,char *const p的意义和用法
(3)遇到过哪些警告:答曰:类型不匹配,精度丢失
(4)C语言中的默认全局作用域,为什么会成立?编译器角度来分析?其实与extern c的用法一样。要求区分编译错误和链接错误。
(5)view plain void foo(int *p){ //dosomething } 现在主函数是 view plain int main(){ char c = 1; foo(&c); } 有啥问题?我说的还是类型不匹配,恩,面试官认为太泛了。 我说类型对于指针式非常重要的,只有编译器知道了指针的类型,才知道一次处理,如自增操作,走几步?(其实,这里,如果我相当此时如果打印指针内容,指针的类型同样要决定函数要读入地址的内容的几个字节,这就是面试官要得答案。如char p,那么只会读取p所指地址的1个字节,但是int p会读取p所指向地址的4分字节)
正解为:foo中调用的时候,希望传入的是1,但是实际上想foo函数传递参数的时候,会把&c后面的3个字节的内容也传入,这是垃圾信息,这样就会出现隐晦的bug。当然,编译器肯定会警告。...查看更多