记录前两天 测评遇到的两个题目
第一题
int main()
{
static int a[3][3]={2,3,5,7,10,11,13,15,18},y,x,p=&a[2][2];
for(x=0;x<3;x++){
y+=(p-4*x);
}
printf("\n%d",y); //y=30
}
这个题属于一级指针的问题,不断改变指针的指向来取数组中的值,最后进行相加。初始化时,p指向数组的地址是a[2][2],第二次遍历后p指向a[1][1],第三次遍历后p指向a[0][0],故三次相加之和为30.
第二题
int main()
{
char *p="\“A”\";
printf("%d",strlen(p));//5
printf("%d",sizeof(char *)); //在32位系统中是4,64位系统中是8
}
根据ASCII码的转义字符表:
上式可以转化为"“A”",这样就很清楚啦,strlen的长度是5,char*在32位系统中长度是4,64位系统中是8.
当时死活没看懂,以后就不要再错啦,越努力,越幸运,加油!