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

相关文章
相关标签/搜索