2016年4月3日

第一題數組

下面代碼會輸出()spa

1
2
3
4
5
int main(){
  int a[4]={1,2,3,4};
  int *ptr=( int *)(&a+1);
  printf ( "%d" ,*(ptr-1));
}

答案是:4code

解釋:ci

在這裏a和&a的值是同樣的,表示的是同一個地址,可是a+1和&a+1就並不同了,&a+1跳過了整個數組,即指向了末尾的下一個位置。
io

分析下面的代碼:table

#include<stdio.h>
int main(){
    int a[2][2]={{1,2},{3,4}};
    int * b;    b=a[0];
    printf("%d\n",*(b+3));
    printf("%d\n",a);
    printf("%d\n",&a);
    printf("%d\n",a+1);
    printf("%d\n\n",&a+1);
    
    int c[5]={1,2,3,4,5};
    printf("%d\n",c);
    printf("%d\n",c+1);
    printf("%d\n",&c);
    printf("%d\n",&c+1);
    printf("%d\n\n",&c+2);
    
    printf("%d\n",*c);
    printf("%d\n",*(&c));
}
 執行結果爲:class

相關文章
相關標籤/搜索