有如下程序,求分析一下执行过程
时间:10-02
整理:3721RD
点击:
#include <stdio.h>
int func(int a)
{
if (a==0)
{
return a;
}
printf("%d\n",func(a++/2));
return a;
}
int main(int argc, char *argv[])
{
printf("%d",func(7));
return 0;
}
int arr[] ={6,7,8,9,10};
int *ptr =arr;
*(ptr++) +=123;
printf("%d,%d",*ptr,*(++ptr));
这个题目来源于华为的一道C语言笔试题,答案是:8,8。为什么?
我是由你的结果推导出来的,其实这道题考的是printf里面形参的执行顺序,根据你的结果是先执行*(++ptr)再执行*ptr。
你这个叫递归,虽然有“迭代的是人,递归的是神”的说法,但是递归如果控制不好就会堆栈溢出。
我也不明白
我也不知道啊!
堪布懂
