求解决一个c语言输出的问题

#include <stdio.h>
#define rstype_t long // type of the array
typedef struct {
    rstype_t *b, *e; // begin and end of each bucket
} rsbucket_t;
int main(){
    int size=8;
    rstype_t *beg;
    rsbucket_t *k, b[size], *be = b + size; // b[] keeps all the buckets
    for (k = b; k != be; ++k){ 
        k->b = k->e = beg;
        printf("b=%ld, e=%ld\n", k->b, k->e); // 输出 b=4202800, e=4202800
    }
    printf("b=%ld, e=%ld\n", k->b, k->e); // 输出 b=8, e=4203809
    return 0;
}

输出

b=4202800, e=4202800
b=4202800, e=4202800
b=4202800, e=4202800
b=4202800, e=4202800
b=4202800, e=4202800
b=4202800, e=4202800
b=4202800, e=4202800
b=4202800, e=4202800
b=8, e=4203809

问一下 同样的输出语句,为什么最后一行输出的和上面的不一样啊

阅读 1.8k
1 个回答

size为8,b这个数组有效大小为8,这段内存系统为你初始化了,而最后一个,已经跨出了这个区域,内存没定义。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进