c語言:指針錯題




對於:

  1. int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
  2. int *p = &a[5];

則:

p[-2]的值是?


答案:54



對於:

  1. int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
  2. int *p = &a[1];

則:

p[2]的值是?


答案:54


本題目來源於mooc:c語言程序設計,僅供本人個人學習參考使用。


詳解:

大笨蛋~~八貨!你明明造p指向a【5】,代表p【0】=a【5】,那麼p【n】就對應向前向後數就可以了,然而你卻想着下標是從0開始的,於是及其愉快的,木有腦子的認爲第n個數的下標就是n++1,對!就是n+1,然後驗證,兩道答案不一樣啊,不一樣啊。簡直,無言以對==



對於以下代碼段,正確的說法是:

  1. char *p;
  2. while (1) {
  3.     p = malloc(1);
  4.     *p = 0;
  5. }


  • A.

    最終程序會因爲沒有沒有空間了而退出

  • B.

    最終程序會因爲向0地址寫入而退出

  • C.

    程序會一直運行下去

  • D.

    程序不能被編譯













答案:b


對於以下代碼段:

  1. int a[] = {1,2,3,4,5,};
  2. int *p = a;
  3. int *q = &a[5];
  4. printf("%d", q-p);

當sizeof(int)爲4時,以下說法正確的是:

  • A.

    因爲第三行的錯誤不能編譯

  • B.

    因爲第三行的錯誤運行時崩潰

  • C.

    輸出5

  • D.

    輸出20
















答案: C

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章