C筆試題指針
昨天寫的那個(gè)面試題,今天在群里討論,有個(gè)同學(xué)加工了下,變成了新的題目,寫出來大家一起看看。
#include <stdio.h>
struct node
{
int a;int b;int c;
};
int main()
{
struct node s= {3,5,6};
int*pt = (int*)(&s+1);
printf("%d",*(pt-2));
getchar();
return 0;
}
求代碼輸出
&s 是一個(gè)結(jié)構(gòu)體地址,也就是結(jié)構(gòu)體指針,對(duì)指針的操作加1,減1,指的是加上它的類型大小,&s +1 等于 &s + sizeof(struct node)。
知道這個(gè)之后就比較容易得出答案了。

還有之前的題目,如果是一個(gè)數(shù)組a[5]={1,2,3,4,5},然后對(duì)數(shù)組名操作。
#include <stdio.h>
int main()
{
int a[5]={1,2,3,4,5};
printf("%d\n",*((int*)(&a+1)-2));
getchar();
return 0;
}
求上面的代碼輸出,這個(gè)題目和上面的題目是一樣的,對(duì)指針操作一定要搞清楚指針的類型,因?yàn)橹羔橆愋涂梢圆粩喔淖兊摹?br>


評(píng)論
圖片
表情
