1.分析输出结果 int arr[] = {6,7,8,9,10};
int *ptr = arr;
*(ptr++)+=123;
printf(“ %d %d ”, *ptr, *(++ptr));
输出:8 8
过程:对于*(ptr++)+=123;先做加法6+123,然后++,指针指向7;对于printf(“ %d %d ”, *ptr, *(++ptr));从后往前执行,指针先++,指向8,然后输出8,紧接着再输出8
2 分析输出结果
void g(int**);
int main()
{
int line[10],i;
int *p=line;
for (i=0;i10;i++)
{
*p=i;
g(p); //数组对应的值加1
}
for(i=0;i10;i++)
printf("%dn",line[i]);
return 0;
}
void g(int**p)
{
(**p)++;
(*p)++;//
}
输出:
1
2
3
4
5
6
7
8
9
10
3 用递归算法判断数组a[N]是否为一个递增数组。
答案:
递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束:
bool fun( int a[], int n )
{
if( n= =1 )
return true;
if( n= =2 )
return a[n-1] = a[n-2];
return fun( a,n-1) ( a[n-1] = a[n-2] );
}