1.求下面函数的返回值
int?func(x)?
{?
int?countx?=?0;?
while(x)?
{?
countx?++;?
x?=?x&(x-1);
}?
return?countx;
}?
假定x?=?9999。?答案:8
思路:将x转化为2进制,看含有的1的个数。
2:复杂声明
以下代码分别表示什么意思?
void * ( * (*fp1)(int))[10];
float (*(* fp2)(int,int,int))(int);
int (* ( * fp3)())[10]();
- ?void * ( * (*fp1)(int))[10]; ??fp1是一个指针,指向一个函数,这个函数的参数为int型,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素,每个元素是一个void*型指针。
- float (*(* fp2)(int,int,int))(int); ??fp2是一个指针,指向一个函数,这个函数的参数为3个int型,函数的返回值是一个指针,这个指针指向一个函数,这个函数的参数为int型,函数的返回值是float型。
- int (* ( * fp3)())[10](); ??fp3是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素,每个元素是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是int型。
未完,不定时补充。。。。。。。。?
|