第一題數組
下面代碼會輸出()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