嵌入式C笔试之三纠错题

原创
2020/04/19 22:37
阅读数 101

 

三, 纠错题

(注: 以下题目或来之博客, 或来之书籍, 或来之原创, 或来之远方, 或来之情怀, 不一而足, 如有雷同, 敬请谅解. )

1, 下面的函数有什么错误:

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

Answer:

由于*ptr指向volatile型参数, 编译器产生类似代码.

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;
}

 

2, 下列函数有什么错误.

int main()

{

        const int x=5;

        const int *ptr;

 

        ptr=&x;

        *ptr=10;

        printf("%d\n",x);

 

        return 0;

}

Anser:编译出错。

知识点: const是在编译器编译过程中来执行检查.

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部
返回顶部
顶部