C笔试题指针
解剖幾個有點難度的C筆試題
昨天寫的那個面試題,今天在群里討論,有個同學加工了下,變成了新的題目,寫出來大家一起看看。
#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 是一個結構體地址,也就是結構體指針,對指針的操作加1,減1,指的是加上它的類型大小,&s +1 等于 &s + sizeof(struct node)。
知道這個之后就比較容易得出答案了。
還有之前的題目,如果是一個數組a[5]={1,2,3,4,5},然后對數組名操作。
#include?<stdio.h>int?main() {int?a[5]={1,2,3,4,5};printf("%d\n",*((int*)(&a+1)-2));getchar();return?0; }求上面的代碼輸出,這個題目和上面的題目是一樣的,對指針操作一定要搞清楚指針的類型,因為指針類型可以不斷改變的。
推薦閱讀:
專輯|Linux文章匯總
專輯|程序人生
專輯|C語言
我的知識小密圈
關注公眾號,后臺回復「1024」獲取學習資料網盤鏈接。
歡迎點贊,關注,轉發,在看,您的每一次鼓勵,我都將銘記于心~
總結
- 上一篇: 浪潮ssr服务器安全加固系统贵吗,浪潮S
- 下一篇: 我想做个MP3,要怎么入手?