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

查看:68
本文介绍了求解决一个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

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

解决方案

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

这篇关于求解决一个c语言输出的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆