第一题数组
下面代码会输出()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