- a是二维数组,a[i][j]的指针访问方式为:( )
A *(a+i+j)
B ((a+i)+j)
C *(a+i)+j
D *a+i+j
2.输出以下结果
define add(a,b) a+b
int main()
{
printf("",3*add(4,7));
}
3.使用程序解答如何判断一个单向链表中是否有环。
struct listtype
{
int data;
struct listtype * next;
}list;
int find_cicle(list *head)
{
list *pFast=head;
list *pSlow=head;
if (pFast==NULL)
{
return -1;
}
while(pFast && pFast->next)
{
pFast=pFast->next->next;
pSlow=pSlow->next;
if (pFast==pSlow)
{
return 1;
}
}
return 0
}
4.malloc/free 和new/delete的区别
5.autorelease 和 release的区别
release 会立马对对象进行引用计数减一操作,如果当前对象的引用计数小于0,则会进行释放。
autorelease 则会将该对象放入到自动释放池中,当一帧结束的时候会执行release操作进行引用计数减一操作,如果当前对象的引用计数小于0,则会进行释放。
6.说说cocos2d的屏幕适配方案
7.分别写出BOOL,int ,float,指针类型的变量a与‘零’的比较语句
BOOL : if ( !a ) or if(a)
int : if ( a == 0)
float : const EXPRESSION EXP = 0.000001 if ( a < EXP&& a >-EXP)
pointer : if ( a != NULL) or if(a == NULL)
8.写一个函数找出一个整数数组中,第二大的数。
int max,second,i;
max=0;
second=0;
for(i=0;i<length;i++){
if(a[i]>max){
second=max;
max=a[i];
} else if(a[i]>second){
second=a[i];
}
}
return second;
}
/***
* 冒泡两次找到最大值
* @param a
* @param length
* @return
*/
public static int find2(int a[],int length){
int i=0;
int j=0;
for(i=0;i<2;i++){
for(j=i;j<length;j++){
if(a[i]<a[j]){
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
return a[1];
}