初始化全局变量实例说明C语言中初始化和未初始化的全局变量所在不同的段

本文是一篇关于初始化全局变量的帖子

    实例说明C语言中初始化和未初始化的全局变量地点不同的段

    

一个程序:

    

Makefile:
objs := bss.o

all: bss
bss: $(objs)
	gcc -o bss_elf bss.c
	objdump -D bss_elf > bss.dis

clean:
	rm -f bss_elf bss.dis *.o

    主程序:

/*
 * bss.c
 *
 *  Created on: 2013-5-16
 *      Author: root
 */

int g_val;

void changeVal()
{
	int  a;
	a = 1;
	g_val = 4;
}

int main(void)
{
	changeVal();
	return 0;
}

    

下边是我根据不同的g_val的值进行编译,查看 bss.dis来看地点不同的段:

    


    

初始化和全局变量

    


    每日一道理
微笑,是春天里的一丝新绿,是秋日里的一缕阳光,是骄阳下的一片浓荫,是冬雪中的一株梅红……微笑着去面对吧,你会感到人生是那样的温馨与甜蜜!

    


    

初始化和全局变量

    


    


    

初始化和全局变量

    


    

         通过实现可以精确的说明: .bss段是放未初始化或者初始化为0的全局变量.data段是寄存初始了且不为零的全局变量。bss段中的值全体赋为了0。程序中就不存在没有初始化的全局变量了,你不初始化,bss段也会帮你初始化为0。

    


    

         这样做一次实验超过看好多次书!

    

    

    

    

    

    

文章结束给大家分享下程序员的一些笑话语录: 姿势要丰富,经常上百度!

原文地址:https://www.cnblogs.com/jiangu66/p/3084563.html