C语言之面试常考题

考试题一

 

#include "stdio.h"

int main()
{
    int arr[5] = {1,2,3,4,5};
    int *p = arr;
    for(size_t i=0;i<5;i++)
    {
        printf("i:%d %d\n",p[i],*p++);
    }
    return 0;
}

 

执行结果如下:

 

考察的知识点

 

1printf 和 C++ 中的 cout << 一样,先执行后面的再执行前面的,实现方式用了栈的思想,先入栈的后出栈执行

 

2p[i] = * (p+i)

 

3*p++=*(p++),由于++是后缀,所以先取p的值(就是地址)执行*p,也就是取值了,之后p再加1。

即*和++都是同级运算符,右结合。

但++要整个表达式运算完了才运算,先提取P指向对象的值,然后P再做++运算,指向下一个对象。

*p++的意思就是先取出指针p指向的地址单元的数据,之后再将该值加1。

 

 

posted @ 2021-03-09 21:23  Aaron看世界  阅读(208)  评论(0编辑  收藏  举报