求解决一个c语言输出的问题
本文介绍了求解决一个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屋!
查看全文