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;
}
执行结果如下:
考察的知识点:
1、printf
和 C++ 中的 cout <<
一样,先执行后面的再执行前面的,实现方式用了栈的思想,先入栈的后出栈执行。
2、p[i] = * (p+i)
3、*p++=*(p++),由于++是后缀,所以先取p的值(就是地址)执行*p,也就是取值了,之后p再加1。
即*和++都是同级运算符,右结合。
但++要整个表达式运算完了才运算,先提取P指向对象的值,然后P再做++运算,指向下一个对象。
*p++的意思就是先取出指针p指向的地址单元的数据,之后再将该值加1。