C筆試題指針
昨天寫的那個面試題,今天在群里討論,有個同學(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 是一個結(jié)構(gòu)體地址,也就是結(jié)構(gòu)體指針,對指針的操作加1,減1,指的是加上它的類型大小,&s +1 等于 &s + sizeof(struct node)。
知道這個之后就比較容易得出答案了。

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


評論
圖片
表情
