• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

C语言面试题:与指针相关的问题,附答案和详解

OC/C/C++ 水墨上仙 1436次浏览

这是一道经典的C语言与指针相关的面试题,代码的主体只有一句,三个星号表示的指针足以搞得人头晕眼花,下面附带了该题目的详细运行过程和解释。

int square(volatile int *ptr)  
{  
    return *ptr * *ptr;  
}  

上面的代码编译后会产生类似下面的代码


 // http://www.75271.com
int square(volatile int *ptr)  
{  
    int a,b;  
    a = *ptr;  
    b = *ptr;  
    return a * b;  
}  

答案:由于*ptr的值可能被意想不到的改变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:


long square(volatile int *ptr)  
{  
    int a;  
    a =*ptr;  
    return a * a;  
}  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C语言面试题:与指针相关的问题,附答案和详解
喜欢 (0)
加载中……